在一个子进程中运行多个 CLI 命令,但在 Node 中单独处理每个输出

问题描述 投票:0回答:1

我需要在唯一的一个子进程中执行一批 CLI 命令。 例如,假设我有这些 shell 命令:

echo 1
echo 2
echo 3

据我所知,

child_process.exec
不太适合我的情况,因为它会为每个命令创建子进程。我可以通过
&&
连接这些命令,并通过
child_process.spawn
作为 shell 脚本运行 - 但是,我的目的是 单独处理每个命令,而不是像整个 shell 脚本那样。

感谢您的任何建议和提示。

node.js command-line-interface
1个回答
0
投票

事实证明我可以向

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();

这正是我需要的。

© www.soinside.com 2019 - 2024. All rights reserved.