我有使用 Python 编写的自定义命令行,它使用“print”语句打印其输出。我通过产生一个子进程并使用child.stdin.write方法向它发送命令来从 Node.js 使用它。这是来源:
var childProcess = require('child_process'),
spawn = childProcess.spawn;
var child = spawn('./custom_cli', ['argument_1', 'argument_2']);
child.stdout.on('data', function (d) {
console.log('out: ' + d);
});
child.stderr.on('data', function (d) {
console.log('err: ' + d);
});
//execute first command after 1sec
setTimeout(function () {
child.stdin.write('some_command' + '\n');
}, 1000);
//execute "quit" command after 2sec
//to terminate the command line
setTimeout(function () {
child.stdin.write('quit' + '\n');
}, 2000);
现在的问题是我没有收到流动模式的输出。我想在打印后立即从子进程中获取输出,但只有在子进程终止时(使用自定义 cli 的退出命令),我才会收到所有命令的输出。