在Linux上使用Ada IO Multiplexing

时间:2011-08-09 14:29:00

标签: ada

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

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

我似乎无法找到包含select调用的包 - 我是否必须在这里寻找一些特定于平台的包?我在哪里可以找到这个?我甚至在这里寻找合适的东西吗?

1 个答案:

答案 0 :(得分:1)

select()是特定于Unix的OS调用,因此不属于Ada的标准库。

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

对于第一个选项,我只能帮助一点,因为我没有方便的Unix系统。 Posix包应该拥有它,我相信你可以找到一个package (Florist) for Gnat here。我不能说它的质量。

要制作自己的绑定,您需要在Appendix B of the LRM中查看为此提供的设施。这虽然是一个高级主题,但除非您了解操作系统如何执行其子程序链接或准备好学习,否则不应尝试。

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