【问题标题】:Kiling processes in C with Signals用信号杀死 C 中的进程
【发布时间】:2011-03-28 05:24:40
【问题描述】:

我的程序中的主进程再分叉 3 个进程,进程 ID 为 pid1、pid2、pid3。 pid1 和 pid2 进程处于无限循环中。我想要的是当 pid3 进程结束时,包括主进程在内的所有进程都被终止。截至目前,我正在使用:

wait(pid3);
kill(0, SIGKILL);

正如我所说的那样,它会在终端上打印 Killed。我不希望信号显示被杀死并且实际上什么都没有,而是优雅地退出程序。我该怎么做?

【问题讨论】:

    标签: c process signals kill


    【解决方案1】:

    改用SIGTERM,并安装一个信号处理程序,在接收SIGTERM时执行干净退出(例如exit(0))。

    【讨论】:

    • 实际上,由于您可能希望允许程序的调用者检测用户是否使用SIGTERM 将其杀死(kill 命令的正常行为),因此最好使用单独的信号,如SIGUSR1,用于通知其他进程它们应该退出。
    【解决方案2】:

    另一种方法是在进程之间设置pipe(),并让 pid1 和 pid2 进程在它们的管道上看到文件结尾时退出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2016-08-30
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多