【问题标题】:SIGINT received from children processes tooSIGINT 也从子进程收到
【发布时间】:2023-12-30 23:32:01
【问题描述】:

我有 2 个程序(由我编写)。第一个名为“MAN”的进程将调用“D”(第二个),该进程将在后台运行,直到以某种方式终止。

我想在不终止 D 的情况下终止 MAN。

我尝试使用 ctrl + c 终止 MAN,它正确终止了 man(我截获了 sigint 信号),现在我希望 D 继续运行,但是当 MAN 收到 CTRL + C 时,D 也收到它。

如何处理这种情况?重要的是,我想保留仅运行 D 并使用 CTRL + C 终止的可能性。当我通过 MAN 运行它时,问题就出现了,我不想用 CTRL + C 来终止它,它应该只到达 MAN。

有什么建议吗?

【问题讨论】:

  • 我认为正确的方法是断开 D 进程与控制台的连接,这就是所谓的守护进程。
  • 我正在考虑这样的事情,但我不知道这是可能的

标签: c unix signals signal-handling


【解决方案1】:

子进程 (D) 应通过调用 setsid(2) 与控制终端解除关联。

【讨论】: