C++ : Interix signals

标签 c++ posix compiler-errors signals interix

如何在 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

引用的其他 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/

相关文章:

c++ - 向下转换非多态类型?

shell - 如何导致 Linux 管道失败?

jpa - QueryException异常错误

iphone - NSInvalidArgumentException与UITableView吗?

c++ - 模板类的实例之间是否有共享范围?

c++ - MVP 矩阵在着色器之外不工作?

c++ - Qt/C++ 如何迭代给定类对象的 QMetaObject 属性/数据类型?

c++ - 当字节不可用时,QLocalServer 发出 readyRead

c - 如果我只是使用 wait() 一次等待 1 个 child 完成,我是否需要对 SIGCHLD 处理程序执行任何操作?

java - 使用构造函数时出现Java错误 “cannot find symbol”