2013年10月30日水曜日

Node.js の child_process の exec, spawn の違い

幾つか違いに関する記事はある

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 件のコメント:

コメントを投稿