当父进程以Control + C结束时终止进程

时间:2011-10-31 10:38:13

标签: c linux process

我有一个包含两个进程的程序。其中一个可以终止或退出,因为一个例外。当我正在测试程序时,我使用Control + c完成它,但子进程仍在运行。

当我按下control + c或父进程终止时,是否有任何选项可以终止进程。

3 个答案:

答案 0 :(得分:6)

没有选项可以自动执行此操作,但您可以编写应用程序代码来支持它。先决条件是希望对方终止的进程必须具有进程ID;这是父母从fork()电话中收到的值。

为每个进程提供SIGINT的信号处理程序 - 当按下control-C时,SIGINT将被发送到进程。在此信号处理程序中,将信号发送到您的其他进程,然后exit()

答案 1 :(得分:1)

您可以在子进程上启动侦听器,定期检查父进程是否仍在运行。

答案 2 :(得分:0)

您可以找到所需的所有答案 here 例如,您可以陷阱 CTRL + C并在 SIGINT 信号上运行子功能,该功能管理您要退出的方式或 kill 正在运行的PID。

非功能性实例来说明原理

SIGINT=2
trap 'clean_exit' $SIGINT
# other thgs in your main prog
function clean_exit(){
   # define SIGTERM and your $pid according to your need
   kill -$SIGTERM $pid
   #other things to  do
}