Подтвердить что ты не робот

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

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

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

Спасибо.


Подробнее:

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

Получают следующие ошибки во время компиляции, только для Interix; а не Linux, после добавления кода 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/[email protected]/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

4b9b3361

Ответ 1

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

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

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

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