私はrpmからファイルを抽出するためにpythonサブプロセスを使って以下のコマンドを実行しています。 しかし、rpmサイズが25〜30 MBを超えるとコマンドが失敗します。 Popen
、call
、stdout
をPIPE
、os.system
としてコマンドを試してみました。このコマンドは、シェルで直接実行するとうまく動作します。問題は、私はPythonのrpm2cpioを実行しているときにPythonのサブプロセス呼び出しがハングアップする
コマンド:
rpm2cpio <rpm_name>.rpm| cpio -idmv
私は、プロセスIDにstraceのを行なったし、そのは、常にいくつかのwriteシステムコールに掛けることがわかっ
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にリダイレクトしましたか?そして、以下の答えの1つが示唆しているようにパイプを読むのを忘れましたか?デバッグする必要のないコードをデバッグすることはできません。 – tdelaney