我正在使用 python 子进程运行以下命令以从 rpm 中提取文件。但是当 rpm 大小超过 25 - 30 MB 时,该命令会失败。尝试使用Popen
, call
, 和stdout
asPIPE
和os.system
as 的命令。当我直接在 shell 中运行此命令时,它运行良好。问题只是当我通过某种方式从 Python 调用它时
命令:
rpm2cpio <rpm_name>.rpm| cpio -idmv
我对进程 ID 进行了 strace,发现它总是挂在一些写系统调用上
ps -ef | grep cpio
root 4699 4698 4 11:05 pts/0 00:00:00 rpm2cpio kernel-2.6.32-573.26.1.el6.x86_64.rpm
root 4700 4698 0 11:05 pts/0 00:00:00 cpio -idmv
strace -p 4699
Process 4699 attached
write(10, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0rc_pixelview_new"..., 8192
strace -p 4700
Process 4700 attached
write(2, "./lib/modules/2.6.32-573.26.1.el"..., 94
我有两个问题:
- 有人能弄清楚这里有什么问题吗?为什么当 rpm 大小超过 25 MB 时它会失败。
- 有没有其他方法可以从 python 中提取 rpm 内容?