读取正在等待输入的衍生进程的标准输出
Read stdout of spawned process that is waiting for input
我有一个 Swift 程序,它在等待 \n
(终止执行)时将信息记录到 stdout
。它在启动 运行ning 后立即请求输入,并在 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);
因为我正在使用 on('data')
,所以我期待看到日志 "live",但它们仅在 process.stdin.write('\n');
之后才被处理
有什么方法可以获取数据"live"?
PS:如果我在终端 (swift/main
) 中 运行 Swift 程序,它会按预期工作。
您可能必须在 Swift 中禁用标准输出缓冲或手动刷新标准输出。
手动冲洗:
fflush(__stdoutp)
要禁用输出缓冲:
setbuf(__stdoutp, nil);
我有一个 Swift 程序,它在等待 \n
(终止执行)时将信息记录到 stdout
。它在启动 运行ning 后立即请求输入,并在 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);
因为我正在使用 on('data')
,所以我期待看到日志 "live",但它们仅在 process.stdin.write('\n');
有什么方法可以获取数据"live"?
PS:如果我在终端 (swift/main
) 中 运行 Swift 程序,它会按预期工作。
您可能必须在 Swift 中禁用标准输出缓冲或手动刷新标准输出。
手动冲洗:
fflush(__stdoutp)
要禁用输出缓冲:
setbuf(__stdoutp, nil);