在我的场景中,什么可能导致解压缩命令返回 -1
What could cause unzip command returning -1 in my scenario?
我通过system()
调用在我的C++代码中以以下格式运行解压缩:
/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
下运行整个事情也会显示会发生什么。
相关文章:
- 使用C++进行运行长度解压缩
- C++ 如何将数组值解压缩为函数参数
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 浏览压缩文件与游览解压缩它们
- 如何在C++向量中解压缩多个值
- 解压缩 C 样式数组以及C++中的参数包
- 如何在 cpp 中解压缩数字,如果它们是使用 struct.pack(fmt, v1, v2, ..) 打包在 pyth
- 如何使用 Poco::ZIP 压缩/解压缩 zip 文件
- 在编译时解压缩数组扩展数据块 (C++11/14)
- 使用 RtMidi 解压缩 Midi 时间码
- 将参数包解压缩到 std::initializer_list?
- 解压缩可变模板参数
- 解压缩附加的压缩字符串
- 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压缩到__m256的最快方法
- C++宏解压缩并加入
- 解压缩串联的 zlib 流而不读取下一个字节
- 解压缩位大小不能被 8 整除的值流
- 为流运算符返回代理类时解压缩参数
- 在我的场景中,什么可能导致解压缩命令返回 -1