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