发送信号给子进程?
问题描述:
答
我无法重现的行为,你看到:
$ echo 'all: ; @echo sleeping; sleep 600' | make -f-
sleeping
^C
make: *** [/tmp/GmjcnM8Y:1: all] Interrupt
$ ps -aef | grep sleep
的C-C后,睡程序也被杀害。因此,你将不得不提供更多的细节。
我认为问题在于'打包器'和'睡眠'进程必须发送信号,然后disanned并发送到后台。通常在Packer中,如果发送TERM信号,该过程将发出更多关于如何清理所有内容的日志。在Make中,发送TERM后不会再发送输出。 –
对不起,但我不明白你的评论。你的问题说,make不会转发^ C(SIGTERM),但make会转发^ C。如果还有更多事情需要发生,那么你必须自行安排:make不知道它调用的过程实际上做了什么:它只是启动一个过程并等待它完成。如果它得到一个SIGTERM,它会传递给孩子们。请注意,使用进程组就像其他任何UNIX程序一样:如果您运行的进程更改为不同的进程组,则没有办法做到这一点。 – MadScientist