我来看看标准的Ada POSIX binding和GNAT的Florist实现。目的是评估是否可以通过使用pragma本身移植对旧版应用程序的移植。导入C POSIX函数以使用标准绑定(bind)。最终目标是能够在不更改源代码的情况下在Solaris和Linux中重新编译应用程序。我的疑问是UNIX传统中用于进程间通信功能的几组接口(interface),例如信号灯,消息队列等。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绑定(bind)不提供对它们的绑定(bind)?它们是否比其他接口(interface)“少了POSIX”?
  • 如果我决定将应用程序移植到Florist,则应考虑在行为上有哪些差异,以防止任何回归?你会建议反对吗?
  • 最佳答案

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

    关于linux - Ada POSIX绑定(bind)和用于IPC的几组POSIX接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59661290/

    10-13 07:30