我目前正在制造一个外壳,并且在启动需要在后台工作的过程以及启动后按CTRL-C时遇到了麻烦。
基本上一切都很好,但是如果我在运行分叉的过程时按CTRL-C,即使我处理了信号,也会向孩子提出CTRL-C。我了解传播的原因(如果我正确理解的话,信号发送给与终端有关的所有儿童)
问题是正如我在上一个与我的问题有关的主题中所看到的,当我们在执行后,我们无法处理信号。
所以我要向社区问是否有任何人在我的孩子中处理这个Ctrl-C(基本上什么都不做),因为我需要在杀死每个背景过程之前在父亲过程中询问确认。
希望这很清楚,请随时询问更多信息是否存在误解(对不起,英语不是我的母语)。谢谢
由键盘中断生成的信号(如 Ctrl+C
)被发送到当前前景组的每个进程, sessign 。防止背景过程受到这些信号影响的最佳方法是将其从终端的会话(以及前景组)分离。为此,您需要在Exec之前打电话给setsid(2)
。