在为[SIGINT]注册信号处理程序后,进程有一个'fork'调用。通过命令行发送SIGINT时会发生什么?父母是退出还是孩子或两者兼而有之?父母和孩子都在循环中运行无限。
答案 0 :(得分:16)
如果在注册信号处理程序后执行fork
(不再进一步exec*
),则将在父进程和子进程中使用相同的信号处理程序。也就是说,如果您在exit
处理程序中执行SIGINT
以外的操作,父母和孩子都不会退出(SIGINT
的发送方式与此无关)。
如果您的意思是从{em>终端发送的SIGINT
(vintr
字符,通常是Ctrl+C
):进程将使用< em> terminal 作为控制终端。也就是说,除非您将孩子或父母与控制终端分离,否则他们都会通过致电Ctrl+C
处理程序对SIGINT
做出反应。