Я смотрю на стандартную привязку Ada POSIX и реализацию Florist для GNAT. Цель состоит в том, чтобы оценить, можно ли перенести устаревшее приложение из собственного использования прагмы. Импорт функций C POSIX для использования стандартного связывания. Конечная цель состоит в том, чтобы иметь возможность перекомпилировать приложение в Solaris и Linux без изменений исходного кода. Мои сомнения касаются нескольких наборов интерфейсов, используемых в традиции UNIX для функций межпроцессного взаимодействия, таких как семафоры, очереди сообщений и т. Д. c. Флорист импортирует эти C функции:
- Семафоры : mq_close mq_getattr mq_notify mq_open mq_receive mq_send mq_setattr mq_unlink
В то время как приложение импортирует эти другие наборы: - Семафоры: semget semop semctl - Очереди сообщений: msgctl 101 * * * * * * * * * * * * * * * * * * MSR * MSG * * * * * * * * * * * * * MSR * MSG * msg * определяет набор, используемый приложением, как System V, а не POSIX, тогда как в других они объявлены как стандартизированные IEEE Std 1003.1-2001 , который, по-видимому, является POSIX.
Мои вопросы:
- Действительно ли наборы "System V" стандартизированы POSIX?
- Если это POSIX, почему стандартная привязка Ada POSIX не обеспечивает привязки к ним? Являются ли они «менее POSIX», чем другие интерфейсы?
- Если я решу перенести приложение на Florist, какие различия в поведении я должен учитывать, чтобы предотвратить регресс? Вы бы порекомендовали против этого?