我正在運行下面的命令,使用python子進程從rpm中提取文件。 但是,當rpm大小超過25-30 MB時,該命令將失敗。嘗試使用Popen
,call
,使用stdout
作爲PIPE
和os.system
。當我直接在shell中運行它時,此命令正常工作。問題是,只有當我通過某些手段從Python的Python子進程在運行時調用hungs rpm2cpio
命令:
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
我有2個問題:
- 有人可以弄清楚這裏有什麼問題嗎?爲什麼當rpm大小超過25 MB時會失敗。
- 有沒有其他方法可以從python中提取rpm內容?
請發表您使用的Python代碼。您是否將stdout重定向到PIPE,然後忘記按照以下答案之一的建議閱讀管道?如果代碼不需要調試,我們就無法進行調試。 – tdelaney