在执行以下行时,错误“ spawnSync/bin/sh ENOBUFS ”在我的 NodeJs 应用程序中非系统地产生:
child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`);
存档尺寸为 81.5 MB,带有 NVM 的 NodeJs 版本:12.17.0。
最佳答案
问题是 执行同步 模式在 shell 中执行命令,其中有限的缓冲区 (200 Kb) 用于转发执行输出。此外,默认的 shell 执行选项是“ pipe ”,这意味着必须将输出转发给父级。
为了让 shell 忽略执行输出,即将输出转发到/dev/null,从而防止缓冲区被填满,您必须使用“ 忽略 ”执行选项,如下所示:
child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`, { stdio: 'ignore' });
阅读更多关于 执行 和 产卵 执行模式 here和 here附言还要考虑这个错误产生 系统地在存档提取期间,当您用完磁盘空间时。
关于javascript - spawnSync/bin/sh ENOBUFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63796633/