Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在注册信号处理程序后,进程有一个“fork”调用 [for SIGINT]。通过命令行发送 SIGINT 时会发生什么?父母是否退出或孩子或两者兼而有之?父母和孩子都在运行无限的while循环。
如果您在注册信号处理程序后这样做fork(无需进一步exec*),则将在父进程和子进程中使用相同的信号处理程序。也就是说,如果您exit在SIGINT处理程序中执行其他操作,则父母和孩子都不会退出(SIGINT此处与发送方式无关)。
fork
exec*
exit
SIGINT
如果您的意思是SIGINT从终端发送(vintr通常是字符Ctrl+C):它将被使用终端作为控制终端的进程接收。也就是说,除非您将子或父与控制终端分离,否则两者都会Ctrl+C通过调用您的SIGINT处理程序来做出反应。
vintr
Ctrl+C