11

如何在Interix平台上编译/使用信号?我无法编译它,因为 Interix 似乎不符合 POSIX 标准,至少在.signal.h

如果有人找到解决此问题的方法并允许在 Interix 上编译带有信号的代码,请告诉我如何!

谢谢。


细节:

使用 C、C++ 编写的旧版软件,基于 Linux 和 Interix(适用于 Win XP)。

编译期间出现以下错误,仅在 Interix 上;不在Linux上,添加pthreadsignal编码后。不能在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

4

2 回答 2

1

根据 POSIX 规范,struct sigaction没有成员sa_sigaction,它有sa_handler.

Interix 在这种情况下是 POSIX 兼容的,您移植的代码不是。

请注意,可以使 Linux 与sa_handler.

不过,您也许可以使用正确#DEFINE的 s 使其工作。

于 2012-01-23T14:21:34.650 回答
0

请参阅上面的Interix 手册页和开放组链接。

您可以将 si_sigaction 替换为 sa_handler。

于 2011-01-27T02:40:01.663 回答