如何清理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,而不是等待它。
#!/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(); } });