我有两个独立的子进程正在运行,一个在启动时开始,另一个在“如果消息==='!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}`);
});
}
});
你们是否知道为什么未终止该过程/我应该如何解决?
答案 0 :(得分:1)
.kill不会直接杀死进程。它向它发送一个SIGTERM,当进程正在等待磁盘I / O或网络时,可以将其忽略。一个更好的主意是将SIGKILL发送到该过程,但这可能很危险。