信号处理程序的父和子行为

时间:2013-02-13 11:33:09

标签: unix

在为[SIGINT]注册信号处理程序后,进程有一个'fork'调用。通过命令行发送SIGINT时会发生什么?父母是退出还是孩子或两者兼而有之?父母和孩子都在循环中运行无限。

1 个答案:

答案 0 :(得分:16)

如果在注册信号处理程序后执行fork(不再进一步exec*),则将在父进程和子进程中使用相同的信号处理程序。也就是说,如果您在exit处理程序中执行SIGINT以外的操作,父母和孩子都不会退出(SIGINT的发送方式与此无关)。

如果您的意思是从{em>终端发送的SIGINTvintr字符,通常是Ctrl+C):进程将使用< em> terminal 作为控制终端。也就是说,除非您将孩子或父母与控制终端分离,否则他们都会通过致电Ctrl+C处理程序对SIGINT做出反应。