CTRL+C不会杀死我的程序



我有一个程序,其中fork是一个孩子。我试图捕捉以下信号:SIGINT, SIGPIPESIGTERM

Ctrl+c(生成SIGINT - afaik)上,我想确保在主程序终止之前杀死子进程,这是我在信号处理程序中所做的。

现在我的期望/理解是父进程将在Ctrl+c下自动被杀死。但这并没有发生。

Ctrl+c我得到shell提示回来,但我仍然可以看到我的进程在ps。所以基本上我的主程序不会被杀死。

我的理解错了吗?

编辑0:一个观察:在Ctrl+c之前,ps主程序状态为S,但在Ctrl+c之后,其I

它在信号处理程序代码完成运行后被杀死,在您的情况下,它实际上不会死亡,直到您在SIGINT处理程序代码中放置的代码执行(如果您写得正确,它应该关闭子进程)。

似乎你的处理程序代码正在做一些不正确的事情,不让进程退出,请发布你的处理程序代码以及你如何设置你的处理程序,因为有可能在SIGINT上做一个SIGIGN(忽略),以便CTRL+C有效地对你的程序不做任何事情。

确保调用exit(0)或exit(1),或者使用错误代码告诉进程终止,否则进程将不会退出。

相关内容

  • 没有找到相关文章

最新更新