【发布时间】:2017-09-09 19:58:49
【问题描述】:
我正在编写一个程序,它使用fork() 创建多个进程,然后调用exec 函数到同一个程序(这是教授要求的)。
我需要它对 CTRL+C (SIGINT) 做出反应并询问用户他/她是否想离开。问题是所有子进程也都实现了信号处理程序,因此,当发送信号时,用户必须回答与进程数相同的次数。
我只希望它在每个 CTRL+C 时询问用户一次。
我可以实施哪些解决方案?
【问题讨论】:
-
先分叉,再设置信号处理?还是在孩子们,
exec之前,将信号处理程序设置为默认值? -
fork() 生成的进程也会 fork(),因此无论哪种方式,它都会在(几乎)所有进程中安装处理程序。
-
第一组子进程将知道它们是子进程,因此将沿着与第一个“主”进程不同的路径继续。如果他们不这样做,我会说你的设计似乎有缺陷。
-
昨天你的同学asked about this。他提供了代码。
标签: c linux process signals handler