Я использую node.js, чтобы отслеживать API-интерфейс веб-сайта для команд и выбирать соответствующий дочерний процесс на основе указанной команды.Только один дочерний процесс должен быть запущен одновременно.На данный момент дочерний процесс 1 начинается при запуске сценария node.js (хорошо).Затем, когда слышится команда, запускается дочерний процесс 2 (тоже хорошо), но вместе с дочерним процессом 1 все еще работает в фоновом режиме (плохо).
Как можно завершить дочерний процесс 1 в начале дочернего процесса 2?В настоящее время я использую ("child_process").exec;
, и мой код в основном работает, я должен вместо этого использовать ("child_process").fork;
или ("child_process").spawn;
?
Я пытался использовать execFile.kill('SIGTERM');
при запуске дочернего процесса 2, а такжезаявление else / if без всякой удачи.(Я сократим ненужный код ниже).
const tmi = require('tmi.js');
var exec = require("child_process").exec;
var execFile = require('child_process').exec;
.
.
.
(edited out)
.
.
.
// Register our event handlers (defined below)
client.on('connected', (address, port) => {
client.action('account', 'phrase');
execFile('/path/script.py, function(error, stdout, stderr) {
if (error) {
throw error;
return;
}
});
});
client.on('chat', (channel, user, message, self) => {
if (message === '!exec') {
execFile.kill('SIGTERM'); //to try and terminate child process 1 above
exec('/path/script.py , function(error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
}
});
Я работал над этой проблемой некоторое время без особого прогресса.Любое понимание приветствуется!