Ada POSIX绑定和用于IPC的几组POSIX接口

问题描述 投票:5回答:2

我正在研究标准Ada POSIX binding和GNAT的Florist实现。目的是评估是否可以通过使用pragma本身移植对旧版应用程序的移植。导入C POSIX函数以使用标准绑定。最终目标是能够在不更改源代码的情况下在Solaris和Linux中重新编译应用程序。我的疑问是UNIX传统中用于进程间通信功能的几组接口,例如信号灯,消息队列等。Florist正在导入这些C函数:

  • Semaphores:sem_init sem_destroy sem_open sem_close sem_unlink sem_wait sem_trywait sem_post sem_getvalue
  • [Message queues:mq_close mq_getattr mq_notify mq_open mq_receive mq_send mq_setattr mq_unlink

而应用程序正在导入以下其他集合:-信号灯:semget semop semctl-邮件队列:msgctl msgrcv msgsnd

某些sources将应用程序使用的集合定义为System V,而不是POSIX,而在others中,它们被IEEE Std 1003.1-2001声明为标准化的,显然是POSIX。

我的问题是:

  • POSIX是否真的对“系统V”集进行了标准化?
  • 如果它们是POSIX,为什么标准的Ada POSIX绑定不提供对它们的绑定?它们是否比其他接口“少了POSIX”?
  • 如果我决定将应用程序移植到Florist,则应考虑在行为上有何不同,以防止任何回归?你会反对吗?
linux posix solaris ada sysv-ipc
2个回答
0
投票

在ASE集合中,有两个POSIX绑定。Posix1Posix2已链接;但是,值得注意的是ASE集合在2000年之前问世,因此不会进行这些修订。


0
投票

我做了一些研究,从ISO working group dedicated to Ada中找到了两个相关文件。在文档Initial Work Scope Summary for updating Ada POSIX Bindings IS 14519:2001 to POSIX Draft IS 9945:2008 and Ada 2005中,列出了Ada标准当前不支持的POSIX功能(可能的扩展)。其中提到了XSI功能(又名SysV IPC)。因此,当前不支持它们。

但是它们不会在不久的将来,因为文档Draft Minutes, Meeting #64指出更新工作已被取消。因此,用户应该继续为这些POSIX C函数创建自己的界面。

© www.soinside.com 2019 - 2024. All rights reserved.