13

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

4

1 回答 1

16

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

如果您的意思是SIGINT终端发送(vintr通常是字符Ctrl+C):它将被使用终端作为控制终端的进程接收。也就是说,除非您将子或父与控制终端分离,否则两者都会Ctrl+C通过调用您的SIGINT处理程序来做出反应。

于 2013-02-13T11:46:54.657 回答