【发布时间】:2014-01-24 17:58:15
【问题描述】:
我正在 xcode 中开发一个类似服务器的程序,我希望它在调试运行之间正常关闭。基本上以下行不起作用
std::signal(SIGKILL, [](int){
printf("got sigkill here!\n");
//shut-down code here
});
我尝试过捕获其他信号,但到目前为止 SIGINT、SIGTERM 和 SIGABRT 都没有工作。如果打印,xcode 如何终止程序
程序以退出代码结束:9
到控制台?
编辑 显然 SIGKILL 是抓不到的,见this wikipedia entry.
与 SIGTERM 和 SIGINT 相比,此信号无法被捕获或 被忽略,并且接收进程无法执行任何清理 接收到这个信号
【问题讨论】:
-
不工作是什么意思?
-
在我得到“程序以退出代码结束:9”之前,我没有在控制台上打印出“这里有 sigkill”。我在终端中执行,它在 control+c 上发送 SIGINT,所以我认为我也应该在 xcode 控制台中获得一些输出。