幾つか違いに関する記事はある
http://memo.yomukaku.net/entries/GFfPTKQ
http://d.hatena.ne.jp/muddydixon/20110708/1310134554
が、プロセスに関する違いもあって、これに関する説明は見つけられなかったので備忘録
exec: プロセスが2つ走る?
pid1 /bin/sh -c command arg1 arg2
pid2 command arg1 arg2
spawn: プロセスは1つ走る
pid3 command arg1 arg2
で、メソッドの戻りオブジェクト (child とする) の pid が
exec の場合 pid1
spawn の場合 pid3
なので、 spawn なら child.kill("SIGTERM") で死ぬけども、
exec だと child.kill("SIGTERM") では pid1 しか死ななくて、pid2 が死なない。
これどういう原理なんだろう。
exec がシェルを起動してシェル内で コマンドが走る上に、
シェルをころしてもその子プロセスは道連れにならない?
0 件のコメント:
コメントを投稿