我正试图杀死用exec打开的子进程。从那时起我无法使用spawn,子进程似乎无法正常工作。
我想念什么吗?子进程不可杀吗?
预先感谢
*编辑:代码
const child = exec(
__dirname +
"/ffmpeg/bin/ffmpeg -i " + url + " -acodec copy -vcodec copy " + savePath,
function(error, stdout, stderr) {
console.log("stdout: " + stdout);
console.log("stderr: " + stderr);
if (error !== null) {
console.log("exec error: " + error);
}
}
);
答案 0 :(得分:0)
我发现,如果您尝试在事件回调中对子进程调用 kill,它不会在作用域内包含子进程。我给你举个例子:
这行不通:
const parameters = ['-D', '-F', `-W${width}`, `-H${height}`, fileName];
const childProcess = spawn('commandLineProgram', parameters)
.stderr.on('data', (data) => {
stringToAccumulateData += data;
if(data.toString().match(/stringLookingFor/)) {
childProcess.kill();
}
});
这会起作用:
const parameters = ['-D', '-F', `-W${width}`, `-H${height}`, fileName];
const childProcess = spawn('commandLineProgram', parameters);
childProcess.stderr.on('data', (data) => {
stringToAccumulateData += data;
if(data.toString().match(/stringLookingFor/)) {
childProcess.kill();
}
});