什么可能导致解压缩命令返回-1在我的scheme?

我用下面的格式在我的C ++代码中通过system()调用来运行解压缩:

 /usr/bin/unzip -o -q /<my_path_to_zip_file>/cfg_T-KTMAKUCB.zip -d /<my_path_to_dest>/../ 

这将几乎90%的时间成功。 我不明白什么可能使它失败的时间与-1返回代码。 有任何想法吗?

根据我的本地人man system

错误返回的值是-1(例如fork(2)失败),否则返回状态。

而POSIX规范说,

如果无法创建子进程,或者无法获得命令语言解释器的终止状态,则system()应返回-1并设置errno以指示错误

最后, unzip手册页列出了各种返回码,但-1不在其中。

如果命令本身不能返回-1,那么问题可能在于初始fork / exec ,这是由于系统范围或每个用户的限制(内存耗尽;进程表已满;最大进程,打开文件或VM用户的大小限制等等)。

无论如何, system故障时,您应该检查errno 。 在strace -f下运行整个事情也将显示发生了什么。