如何在子窗口关闭时终止父进程

时间:2013-08-14 02:22:14

标签: linux bash shell

我正在bash shell中执行一个进程(流服务器),然后再启动一个子进程(媒体播放器)进程。问题是当我关闭孩子时,父母一直在跑步。

我无法访问他们的来源,但我想知道是否有办法将它们包装在祖父母的脚本/流程中,所以当我关闭孩子时父母也会被关闭?

任何指导将不胜感激,提前谢谢。

2 个答案:

答案 0 :(得分:0)

通常,您可以使用命令ps -ef来检查要杀死的进程ID及其父ID,然后您可以使用命令“kill -pid”来终止您要杀死的进程。

答案 1 :(得分:0)

父级可能通过执行文件来启动子级。假设该文件为/blah/blah/child。您可以做的是重命名/blah/blah/child,而是使用一个精心设计的带有该名称的shell脚本。 shell脚本可以通过所有参数调用重命名的子代。当子进程退出时,shell脚本可以终止父进程($ PPID)。

这样的事情:

$ mv -i /blah/blah/child /blah/blah/child-renamed

$ cat > /blah/blah/child 
#!/bin/sh
/blah/blah/child-renamed "$@"
kill -TERM $PPID
^D

chmod +x /blah/blah/child # Actually, you should match the permissions from /blah/blah/child-renamed

如果父母做了一些奇怪的事情但你可能会幸运的话,这可能实际上不起作用。

我刚才想到的另一个复杂问题:如果子进程根据执行文件的名称改变其行为,那么你将不得不更加努力地使其正常工作。