kao*_*aoD 11 stdin flush stream node.js
我生成一个像这样的子进程:
var child = require('child_process');
var proc = child.spawn('python', ['my_script.py', '-p', 'example']);
Run Code Online (Sandbox Code Playgroud)
我还设置了一些数据处理:
proc.stdin.setEncoding('utf8');
proc.stdout.setEncoding('utf8');
proc.stderr.setEncoding('utf8');
proc.stdout.on('data', function (data) {
console.log('out: ' + data);
});
proc.stderr.on('data', function (data) {
console.log('err: ' + data);
});
proc.on('close', function (code) {
console.log('subprocess exited with status ' + code);
proc.stdin.end();
});
Run Code Online (Sandbox Code Playgroud)
我的Python脚本从stdin每行读取行并执行一些操作并打印到stdout.它在shell中工作正常(我写了一行,我立即获得输出)但是当我在Node中执行此操作时:
for (var i = 0; i < 10; i++) {
proc.stdin.write('THIS IS A TEST\n');
}
Run Code Online (Sandbox Code Playgroud)
我一无所获.
我必须修复它调用,proc.stdin.end()但这也终止了子进程(我希望保留在后台,流数据).
我还触发了一个刷新填充缓冲区的大量写入,但这不是一个真正的选择.
有没有办法手动刷新流?