在我的Web开发工作流程,我有两个过程:如何停止两个并发进程?
- 看我的文件夹更改
- 预览我的网站在浏览器中
我希望能够运行它们再后来同时停止它们。我见过使用&运算符大家提示:
process_1 & process_2
但按Ctrl + C
仅停止第二个。我必须手动输入kill
。我在这种方法中错过了什么?
在我的Web开发工作流程,我有两个过程:如何停止两个并发进程?
我希望能够运行它们再后来同时停止它们。我见过使用&运算符大家提示:
process_1 & process_2
但按Ctrl + C
仅停止第二个。我必须手动输入kill
。我在这种方法中错过了什么?
你可以有前景脚本明确地杀子过程响应SIGINT:
#!/bin/sh
trap 'kill $pid1 $pid2' 2
cmd1 &
pid1=$!
cmd2 &
pid2=$!
wait
有一个在这个例子中的竞争条件:如果你pid1
之前发送SIGINT
父分配,kill
会发出一条警告信息,两个孩子都不会被终止。如果在分配pid2
之前发送SIGINT
,则只会发送运行cmd1
的进程信号。无论哪种情况,父母都会继续跑步,并可以发送第二个SIGINT
。 kill
的某些版本允许您通过使用kill -$$
向进程组发送信号来避免这种竞争条件,但并非所有版本的kill
都支持该用法。 (请注意,如果任一子进程没有响应该信号而终止,父进程将不会退出,但会继续等待。)
如何写两个剧本,含
./process_1 &
./process_2 &
和第二含
killall process_1
killall process_2
同时启动prcesses通过运行一个脚本,并通过运行第二个脚本结束这些之一。
工作原理!谢谢 :) – silvenon