我有一个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程序,它会按预期工作。
答案 0 :(得分:2)
您可能必须在Swift中禁用stdout缓冲或手动刷新stdout。
手动冲洗:
fflush(__stdoutp)
禁用输出缓冲:
setbuf(__stdoutp, nil);