首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux上的Ada IO多路复用

Linux上的Ada IO多路复用
EN

Stack Overflow用户
提问于 2011-08-09 22:29:00
回答 1查看 479关注 0票数 1

我正在尝试通过将简单的C++工具移植到Ada来学习Ada。

现在,我正在尝试编写一个简单的串行通信程序,它发送调制解调器命令,并使用select调用等待发出信号的filedescriptor。

我似乎找不到包含select调用的包-我必须在这里查找某个特定于平台的包吗?我在哪里能找到这个?我在这里寻找的是正确的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-10 02:50:13

select()是一个特定于Unix的操作系统调用,因此不是Ada标准库的一部分。

您需要找到一个提供Unix系统调用接口的(非标准)包,使用接口编译指示自己包装它,或者采取不同的方法。

对于第一种选择,我只能提供一点帮助,因为我手头没有Unix系统。Posix包应该由提供,我相信您可以找到这样的package (Florist) for Gnat here。我不能评价它的质量。

要创建自己的绑定,您需要查看Appendix B of the LRM中为此提供的工具。不过,这是一个比较高级的话题,除非您对您的操作系统如何执行子例程链接有很多了解,或者已经准备好学习,否则不应该尝试。

对于“不同的方法”,请查看您正在使用的有关Ada的任务和/或受保护对象的参考指南(不要与C++中的protected关键字混淆)。例如,您可能希望有一个任务,其唯一工作是从串行端口读取传入数据。你可以通过一个集合点在读取之间与它同步,或者通过一个受保护的对象实现一个队列来获得真正的吸引力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6997795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档