我需要在唯一的一个子进程中执行一批 CLI 命令。 例如,假设我有这些 shell 命令:
echo 1
echo 2
echo 3
据我所知,
child_process.exec
不太适合我的情况,因为它会为每个命令创建子进程。我可以通过 &&
连接这些命令,并通过 child_process.spawn
作为 shell 脚本运行 - 但是,我的目的是 单独处理每个命令,而不是像整个 shell 脚本那样。
感谢您的任何建议和提示。
事实证明我可以向
child_process.spawn
进程发送命令:
const { spawn } = require('child_process');
const shell = spawn('sh');
shell.stdout.on('data', (data) => {
console.log(data.toString());
});
shell.stderr.on('data', (data) => {
console.error(data.toString());
});
function sendCommand(command) {
shell.stdin.write(command + '\n');
}
sendCommand('echo 1');
sendCommand('echo 2');
sendCommand('echo 3');
shell.stdin.end();
这正是我需要的。