Unix命令Timeout是否还会杀死进程的任何子进程?

时间:2018-09-11 19:46:58

标签: bash unix

如果不与'--forground'选项一起使用,则'{time3'}的manual似乎杀死了子进程,但是我找不到任何明确的行为定义。

超时命令是否还会杀死子进程/与其一起使用的任何命令的进程组?

1 个答案:

答案 0 :(得分:2)

timeout的GNU coreutils版本可以在here上查看其实现。

是否根据您从文档中得出的结论,是否创建了一个流程组(并整体上将其终止)确实取决于是否传递了--foreground


更明确一点:

  • 不使用--foreground时,我们调用setpgid()创建一个新的进程组,将timeout命令本身和调用的命令都放在其中组。当稍后发生超时时,kill()被传递为0作为要杀死的PID,指定应将整个过程组作为目标。
  • 使用--foreground 时,仅发出立即分叉的PID信号,不发送过程组的其他成员的信号。