2016-11-02 12 views
0

私はbashからアプリケーションを実行し、いつか終了したいと思っています。 いつか終了してもそのようなプロセスはありません

xmessage "Hello World" & pidsave=$! sleep 10; kill $pidsave 

しかし、これが結果です::私は this answerを見つけ

[4] 23034 
[3] Terminated    xmessage "Hello World" 
bash: kill: (22985) - No such process 

見ての通り、xmessageが停止していなかったし、それのウィンドウが残っています。もちろんthis作品:

your_command & sleep 20; kill $! 

最初のコマンドで何が間違っていますか?そして、それは比較whit secondコマンドで何が好きですか?

答えて

0

killコマンドを実行しているときに、すでにプロセスxmessageが終了しています。

これはここで見ることができます:

[3] Terminated    xmessage "Hello World" 

ので、後でそれを-ingない点killはありません。


ウィンドウがまだそこにある理由を答えるために:それは自分自身を殺した後

多くのプロセスは、別のプロセスを生成します。この場合、端末からxmessageを実行して生成したプロセスは、別のウィンドウ(ウィンドウを持つウィンドウ)を生成し、その後に終了します。子は実行中のままであり、親がなくなると孤児になります(initは新しい親になります。initはすべての孤児を継承します)。

+0

しかし、なぜ 'xmessage'ウィンドウは残っていますか? – hasanghaforian

+0

@hasanghaforian編集内容を確認してください。 – heemayl

+0

これらの生成されたプロセスを検出して終了させる方法はありますか? – hasanghaforian

関連する問題