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

Dom*_*nic 3 unix bash

“timeout”命令的手册表明,如果不与“--forground”选项一起使用,它似乎会杀死子进程,但我找不到它的行为方式的任何明确定义。

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

Cha*_*ffy 6

GNU coreutils 版本可以在此处timeout查看其实现。

--foreground正如您从文档中推断的那样,进程组是否被创建(并作为一个整体被杀死)确实取决于是否通过。


更明确一点:

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