比如npm login
命令需要依次输入username
、password
、email
我启动一个子进程执行npm login
我该如何知道子进程正在等待输入,并向其输入内容呢?
比如npm login
命令需要依次输入username
、password
、email
我启动一个子进程执行npm login
我该如何知道子进程正在等待输入,并向其输入内容呢?
不知道你解决木有, 我也是今天刚解决的,共享一下。
参考大佬的文章 在Node.js中如何将数据以stdin的方式传递进由spawn产生的子进程?
const fs = require('fs');
const { spawn } = require('child_process');
var subProcess = spawn('cnpm.cmd', ['login'], { cmd: __dirname });
subProcess.on('error', function() {
console.log('error');
console.log(arguments);
});
subProcess.on('close', code => {
if (code != 0) {
console.log(`子进程退出码:${code}`);
} else {
console.log('登录成功');
}
process.stdin.end();
});
subProcess.stdin.on('end', () => {
process.stdout.write('end');
});
subProcess.stdout.on('data', onData);
subProcess.stderr.on('data', onData);
function onData(data) {
process.stdout.write('# ' + data);
process.stdin.on('data', input => {
input = input.toString().trim();
subProcess.stdin.write(input + '\n');
});
}
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.8k 阅读
4 回答8.7k 阅读
是在控制台输入么,用
readline
,代码如下补充
那可以用进程通讯,下面是简单的实现,你可以看看后面的参考文章,详细研究下
node
的进程间通讯我是用
node
来实现的,如果发送端是别的语言的话,你需要找找相应语言是怎么实现进程通讯的参考