移植到mingw时,“SIGQUIT”信号怎么办?

时间:2013-08-16 19:45:32

标签: c mingw porting

我正在尝试将一些C软件移植到win32,但我不知道如何处理SIGQUIT信号。我检查了Mingw的signal.h并且它不支持SIGQUIT(或SIGHUP,但我假设我可以忽略那个)。

它出现了多次,这是一个例子:

switch (sig) {
     case SIGHUP:
     case SIGINT:
     case SIGTERM:
     case SIGQUIT: {
         /*
         // Bunch of code here removed
         */
         exit(0);
         break;
     }
}

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

Windows仅支持a small range of signalsSIGQUIT不受支持。 mingw刚刚接受了微软的定义。

我只是在使用它之前检查它是否已定义:

switch (sig) {
     case SIGINT:
     case SIGTERM:
#ifdef SIGHUP
     case SIGHUP:
#endif
#ifdef SIGQUIT
     case SIGQUIT:
#endif
     {
         /* ... */
     }
}

当然,您也可以检查_WIN32,它总是在常见的Windows预处理器中定义,或__MINGW32__,它总是在使用mingw预处理器时定义。 不要对这些名称中的“32”感到困惑:在编译64位Windows时也会定义两者。