我正在尝试将一些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;
}
}
有什么建议吗?
答案 0 :(得分:7)
Windows仅支持a small range of signals。 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时也会定义两者。