如何在 Interix 平台上编译/使用信号?我无法编译它,因为 Interix 似乎不符合 POSIX,至少在 signal.h
的实现中是这样。
如果有人找到解决此问题的方法并允许带有信号的代码在 Interix 上编译,请告诉我方法!
谢谢。
详情:
C、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
引用的其他 Material :
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
最佳答案
根据POSIX规范,struct sigaction
没有成员sa_sigaction
,它有sa_handler
。
在这种情况下,Interix 是 POSIX 兼容的,而您移植的代码不是。
请注意,Linux 可以与 sa_handler
配合使用。
虽然您可以使用正确的 #DEFINE
让它工作。
关于C++ : Interix signals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4743257/