提问者:小点点

spawnSync/bin/sh ENOBUFS


执行以下行时,在我的NodeJs应用程序中非系统地产生错误“spawnsync/bin/sh enobufs”:

child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`);

存档维度为81.5MB,NodeJs版本为NVM:12.17.0。


共1个答案

匿名用户

问题是execSync模式在shell中执行命令,shell中的缓冲区(200 Kb)有限,用于转发执行输出。而且,默认的shell执行选项是“pipe”,这意味着输出必须转发给父级。

为了让shell忽略执行输出,即将输出转发到/dev/null,从而防止缓冲区被填满,您必须使用“ignore”执行选项,如下所示:

child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`, { stdio: 'ignore' });

在此处和此处阅读有关exec和spawn执行模式的更多信息