读取正在等待输入的生成进程的stdout

时间:2016-09-01 05:23:00

标签: javascript node.js spawn

我有一个Swift程序,它在等待stdout(终止执行)时将信息记录到\n。它在开始运行后立即请求输入并在以下情况后1~2秒记录信息:

fetchAndLogDataInBackground(); // will print some data in ~1 sec

readLine();

spawn / {{}}使用以下内容:

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); ,我原本希望看到这些日志“正常”,但它们仅在on('data')

之后处理

有什么办法让数据“实时”?

PS:如果我在终端(process.stdin.write('\n');)中运行Swift程序,它会按预期工作。

1 个答案:

答案 0 :(得分:2)

您可能必须在Swift中禁用stdout缓冲或手动刷新stdout。

手动冲洗:

fflush(__stdoutp)

禁用输出缓冲:

setbuf(__stdoutp, nil);