Node.js:Childprocess exec kill不是函数

时间:2019-01-03 12:09:23

标签: node.js exec kill

我正试图杀死用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);
      }
    }
  );

1 个答案:

答案 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();
    }
});