执行以下行时,在我的NodeJs应用程序中非系统地产生错误“spawnsync/bin/sh enobufs”:
child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`);
存档维度为81.5MB,NodeJs版本为NVM:12.17.0。
问题是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执行模式的更多信息