gpt4 book ai didi

node.js - 无缓冲地读取子进程的标准输出

转载 作者:搜寻专家 更新时间:2023-10-31 22:25:58 30 4
gpt4 key购买 nike

我正在尝试读取 Node.js 启动的 Python 脚本的输出。但是,我只能在流程完成后才能访问数据。

var proc, args;

args = [
'./bin/build_map.py',
'--min_lon',
opts.sw.lng,
'--max_lon',
opts.ne.lng,
'--min_lat',
opts.sw.lat,
'--max_lat',
opts.ne.lat,
'--city',
opts.city
];

proc = spawn('python', args);

proc.stdout.on('data', function (buf) {
console.log(buf.toString());
socket.emit('map-creation-response', buf.toString());
});

如果我使用 { stdio : 'inherit' } 启动进程,我可以直接在控制台中看到输出。但是做类似 process.stdout.on('data', ...) 的事情是行不通的。

如何确保我可以在子进程到达时读取输出并将其定向到其他地方?

最佳答案

执行缓冲的进程是 python,因为它知道终端已被重定向而不是真正去到终端。您可以轻松地告诉 Python 不要 执行此缓冲:只需运行“python -u”而不是“python”。就这么简单。

关于node.js - 无缓冲地读取子进程的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163672/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com