C++: Interix сигналы

Как скомпилировать / использовать сигналы на платформе Interix? Я не могу заставить его скомпилировать, потому что Interix кажется не POSIX-совместимым, по крайней мере, в его реализации signal.h,

Если кто-нибудь нашел способ обойти это и позволить скомпилировать код с сигналами на Interix, пожалуйста, дайте мне знать, как!

Благодарю.


Подробности:

Устаревшее программное обеспечение на C, C++ и построено на Linux и Interix (для Win XP).

Получаю следующие ошибки во время компиляции, только на Interix; не в линуксе, после добавления pthread а также signal код. Не можете использовать pthreads без сигналов, потому что конфликтует с Xmotif (компилируется, но падает во время выполнения).

ошибки из-за структурных различий:

`struct siginfo' has no member named `si_value'
aggregate `sigval val' has incomplete type and cannot be defined
`struct sigaction' has no member named `sa_sigaction'

ошибки из-за необъявленных:

`sigqueue' undeclared
`SA_NODEFER' undeclared
`SA_SIGINFO' undeclared

Другие материалы проконсультированы:

http://www.mail-archive.com/bug-gnulib@gnu.org/msg10425.html
http://www.gnu.org/software/hello/manual/gnulib/signal_002eh.html
http://en.wikipedia.org/wiki/Interix
http://www.opengroup.org/susv3xbd/signal.h.html

2 ответа

Согласно спецификации POSIX, есть struct sigaction не имеет члена sa_sigaction, она имеет sa_handler,

Interix является POSIX-совместимым в том случае, если код, который вы переносите, - нет.

Обратите внимание, что Linux можно заставить работать с sa_handler,

Возможно, вы сможете заставить его работать, используя правильный #DEFINEхотя.

См. Справочную страницу Interix и ссылку на открытую группу выше.

Вы можете заменить si_sigaction на sa_handler.

Другие вопросы по тегам