以下代码:
#!/usr/bin/env node
"use strict";
var child_process = require('child_process');
var x = child_process.spawn('sleep', [100],);
throw new Error("failure");
生成子进程并退出而不等待子进程退出。
我该怎么办?我想调用waitpid(2)但是child_process似乎没有waitpid(2)。
增加:
抱歉,我真正想要的是在父级存在时终止子进程,而不是等待它。
答案 0 :(得分:13)
#!/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
添加监听器来监听主要流程,例如process.on('exit', function () { x.kill() })
但抛出这样的错误是一个问题,您最好通过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);
答案 1 :(得分:3)
#!/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();
}
});