如果不与'--forground'选项一起使用,则'{time3'}的manual似乎杀死了子进程,但是我找不到任何明确的行为定义。
超时命令是否还会杀死子进程/与其一起使用的任何命令的进程组?
答案 0 :(得分:2)
timeout
的GNU coreutils版本可以在here上查看其实现。
是否根据您从文档中得出的结论,是否创建了一个流程组(并整体上将其终止)确实取决于是否传递了--foreground
。
更明确一点:
--foreground
时,我们调用setpgid()
创建一个新的进程组,将timeout
命令本身和调用的命令都放在其中组。当稍后发生超时时,kill()
被传递为0
作为要杀死的PID,指定应将整个过程组作为目标。--foreground
时,仅发出立即分叉的PID信号,不发送过程组的其他成员的信号。