Javascript 读取等待输入的派生进程的标准输出
我有一个Swift程序,它在等待Javascript 读取等待输入的派生进程的标准输出,javascript,node.js,spawn,Javascript,Node.js,Spawn,我有一个Swift程序,它在等待\n(终止执行)时将信息记录到标准输出。开始运行后立即请求输入,并在以下时间后1~2秒记录信息: fetchAndLogDataInBackground(); // will print some data in ~1 sec readLine(); 我正在spawning/execFile const spawn = require('child_process').spawn; const process = spawn('swift/main'); p
\n
(终止执行)时将信息记录到标准输出。开始运行后立即请求输入,并在以下时间后1~2秒记录信息:
fetchAndLogDataInBackground(); // will print some data in ~1 sec
readLine();
我正在spawn
ing/execFile
const spawn = require('child_process').spawn;
const process = spawn('swift/main');
process.stdout.on('data', data => console.log(data.toString()));
setTimeout(() => {
process.stdin.write('\n');
}, 5000);
由于我正在('data')
上使用,所以我希望看到日志“实时”,但它们仅在process.stdin.write('\n')之后才被处理代码>
有没有办法让数据“活”起来
PS:如果我在终端(Swift/main
)中运行Swift程序,它将按预期工作。您可能需要禁用标准输出缓冲或手动刷新Swift中的标准输出
要手动刷新,请执行以下操作:
fflush(\uu stdoutp)
要禁用输出缓冲,请执行以下操作:
setbuf(\uu stdoutp,nil);
我不清楚你在期待什么。在我看来,它似乎在正常工作:您的swift程序在读取一行之前不会打印任何内容,而您的意思是,在您为swift程序写入新行之前,您不会获取stdout“数据”
事件…@msdex我很抱歉!我写了一个错误的片段作为例子:(我编辑了问题来纠正它!)