为什么process.kill()无法杀死进程?

时间:2019-05-14 01:12:45

标签: javascript node.js

我有两个独立的子进程正在运行,一个在启动时开始,另一个在“如果消息==='!exec')”中运行。我想在第二个进程的开头杀死第一个子进程(再次是“ if message ==='!exec')。当前所有其他程序都按计划运行,没有错误,但是不幸的是,子进程1没有终止(或也许是这样,但是会自动重新启动?)。

var exec = require("child_process").exec;
var execFile = require('child_process').exec;

var newproc = execFile('/path/executable, function (error, stdout, stderr) {
    if (error) {
    throw error;
    return;
    }
}); 


client.on('chat', (channel, user, message, self) => { 
    if (message === '!exec') {

    newproc.kill(); //here I am trying to kill child process 1

        exec("/path/runtext.py", (error, stdout, stderr) => {
            if (error) {
                console.error(`exec error: ${error}`);
                return;
            }
            console.log(`stdout: ${stdout}`);
            console.log(`stderr: ${stderr}`);
        });

    }
});

你们是否知道为什么未终止该过程/我应该如何解决?

1 个答案:

答案 0 :(得分:1)

.kill不会直接杀死进程。它向它发送一个SIGTERM,当进程正在等待磁盘I / O或网络时,可以将其忽略。一个更好的主意是将SIGKILL发送到该过程,但这可能很危险。