为什么SIGTERM不能在Windows上运行

时间:2016-07-11 06:05:07

标签: c++ windows

这是我的代码:

void signalHandler(int sigNum) {
    OutputDebugStringA("i'm terminated\n");
    exit(sigNum);
}

int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPTSTR    lpCmdLine,
    _In_ int       nCmdShow)
{
    signal(SIGTERM, signalHandler);
    while (1)
    {
        Sleep(100);
    }
    return 0;
}

当我通过windows taskmgr终止它时,DebugString没有显示出来。 我的代码有问题吗?

2 个答案:

答案 0 :(得分:2)

Windows不像Unix系统那样使用信号。

例如,does not generate SIGTERM

答案 1 :(得分:0)

TaskManager使用TerminateProcess API调用来终止所选进程。已终止的进程未收到任何通知。因此,您无法使用SIGTERM信号处理它。