node.js - child_process.spawn 仅在命令完成时立即返回 stdout,但在执行期间不会分块返回

标签 node.js child-process spawn

代码如下:

var exec = require('child_process').spawn;
var child = exec('executable.exe',['-nw','-nc','launch.txt']);
child.stdout.on('data', function(data){
    console.log("STDOUT : ",data.toString());
});
child.stderr.on('data',function(data){
    console.log("STDERR : ",data.toString());
});

总输出约为 20-25 行,我期望以 block 的形式返回数据,但它仅一次返回所有 20-25 行,而不是以 block 的形式返回

请帮助我告诉我我犯了什么错误

谢谢

最佳答案

我也有同样的问题。我注意到它似乎是由通过的数据量触发的。

在它不以 block 的形式出现的情况下,我有 3 行文本,大约在 150 字节的区域。如果我使用详细选项启动相同的进程,产生大约 14k 的输出,那么 data 事件会按预期按 block 触发。

这不是一个好的解决方案,但它可能是一个可行的解决方案。

关于node.js - child_process.spawn 仅在命令完成时立即返回 stdout,但在执行期间不会分块返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49067914/

相关文章:

bash - 如何在bash命令行上输出文件列表

node.js - 如何在我自己的服务器上托管 gatsby(例如 Express)并在我需要时构建网站

node.js - 通过 spawn 从 NodeJS 调用 python 脚本时出现段错误(核心已转储)

mysql - 无法在 cPanel 上的 "live"mySQL 数据库上更新/插入或删除

javascript - Node js服务器: issue passing a variable to a function

node.js - 如何优化 Express.js 路由?

node.js - node.js ChildProcess.fork() 中的字符编码

javascript - 如何关闭 node.js 中子进程的 stdio 管道?

javascript - Node.js 中的 ENOMEM 由高虚拟内存使用率引起

javascript - ImageMagick 比较 : exit code 1 when spawned from Node. js,但从命令行运行时退出代码 0