我通过system()以下格式在我的C++代码中调用来解压缩:
/usr/bin/unzip -o -q /<my_path_to_zip_file>/cfg_T-KTMAKUCB.zip -d /<my_path_to_dest>/../
Run Code Online (Sandbox Code Playgroud)
这几乎有90%的时间会成功.我无法理解什么会导致它失去时间与-1返回代码失败.有任何想法吗?
据我当地人说man system,
错误时返回的值为-1(例如fork(2)失败),否则返回命令的返回状态.
和POSIX规范说,
如果无法创建子进程,或者无法获取命令语言解释器的终止状态,则system()应返回-1并设置errno以指示错误
最后,manpage用于unzip列出各种返回码,但-1不在其中.
如果命令本身不能返回-1,则问题可能是初始fork/ exec,因为类似于系统范围或每用户限制(内存耗尽;进程表已满;最大进程,打开文件或VM大小限制)为用户等等).
你应该在errno什么时候system失败时检查.运行整个事情strace -f也将显示会发生什么.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |