我想从bash运行一个应用程序,并在一段时间后终止它。我找到了这个答案:
xmessage "Hello World" & pidsave=$! sleep 10; kill $pidsave
但结果是:
[4] 23034
[3] Terminated xmessage "Hello World"
bash: kill: (22985) - No such process
正如您所看到的,xmessage
并没有停止,它的窗口仍然存在。这当然有效:
your_command & sleep 20; kill $!
第一个命令出了什么问题?与第二个命令相比,它更喜欢什么?
当您运行kill
命令杀死它时,进程xmessage
终端已经存在。
这可以在这里看到:
[3] Terminated xmessage "Hello World"
所以CCD_ 4-在之后对其没有意义。
要回答窗口仍然存在的原因:
许多进程都会产生另一个进程,然后自杀。在这种情况下,您通过从终端运行xmessage
生成的进程正在生成另一个进程(带有窗口的进程(,然后退出。子级仍在运行,并在父级死亡时成为孤儿(init
成为它的新父级,因为init
继承了所有孤儿(。