11

Interixプラットフォームでシグナルコンパイル/使用する方法は? Interix はPOSIX に準拠していないように見えるため、コンパイルできません。少なくとも.signal.h

これを回避し、信号を含むコードを Interix でコンパイルできるようにする方法を誰かが見つけた場合は、その方法を教えてください。

ありがとう。


詳細:

C、C++ のレガシ ソフトウェアであり、Linux および Interix (Win XP 用) 上に構築されています。

Interix でのみ、コンパイル中に次のエラーが発生します。pthreadおよびsignalコードを追加した後、Linuxではありません。Xmotif と競合するため、シグナルなしでは使用できませんpthreads(コンパイルは実行時にクラッシュします)。

構造体の違いによるエラー:

`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 sigactionmember はなく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 に答える