5

我正在尝试将一些 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;
     }
}

有什么建议么?

4

1 回答 1

7

Windows 只支持小范围的信号SIGQUIT不支持。mingw 只是从微软那里得到了定义。

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

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

或者,当然,您也可以检查_WIN32,它总是在常见的 Windows 预处理器中定义,或者__MINGW32__,它总是在使用 mingw 预处理器时定义。不要被这些名称中的“32”弄糊涂了:在为 64 位 Windows 编译时,它们也会被定义。

于 2013-08-16T22:25:25.130 回答