如何清理node.js中child_process.spawn()的subprocess

以下代码:

#!/usr/bin/env node "use strict"; var child_process = require('child_process'); var x = child_process.spawn('sleep', [100],); throw new Error("failure"); 

产生一个subprocess并退出而不等待subprocess退出。

我该如何等待呢? 我想调用waitpid(2),但是child_process似乎没有waitpid(2)。

添加:

对不起,我真正想要的是杀死父进程时的subprocess,而不是等待它。

       

网上收集的解决方案 "如何清理node.js中child_process.spawn()的subprocess"

 #!/usr/bin/env node "use strict"; var child_process = require('child_process'); var x = child_process.spawn('sleep', [10]); x.on('exit', function () { throw (new Error("failure")); }); 

编辑:

你可以通过在process.on('exit', function () { x.kill() })添加一个监听器来监听主process process.on('exit', function () { x.kill() })

但抛出这样的错误是一个问题,你最好通过process.exit()closures进程process.exit()

 #!/usr/bin/env node "use strict"; var child_process = require('child_process'); var x = child_process.spawn('sleep', [100]); process.on('exit', function () { x.kill(); }); process.exit(1); 
 #!/usr/bin/env node "use strict"; var child_process = require('child_process'); var x = child_process.spawn('sleep', [10]); process.on('exit', function() { if (x) { x.kill(); } });