什么可能导致unzip命令在我的场景中返回-1?

时间:2017-03-27 14:34:26

标签: c++ linux unzip

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

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

这几乎有90%的时间成功。我无法理解什么会导致它失去时间与-1返回代码失败。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

根据我当地的man system

  

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

POSIX spec说,

  

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

最后,unzip的联机帮助页列出了各种返回码,但-1不在其中。

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

errno失败时,你应该检查system。在strace -f下运行整个事情也会显示会发生什么。