Я запускаю следующую команду, используя подпроцесс python для извлечения файлов из rpm. Но команда не работает, когда размер оборотов превышает 25-30 МБ. Пробовал команду, используя Popen
, call
, с stdout
как PIPE
и os.system
. Эта команда работает нормально, когда я запускаю ее непосредственно в оболочке. Проблема только тогда, когда я ссылаться на это с помощью некоторых средств из PythonПодпроцесс подпроцесса Python зависает при запуске rpm2cpio
Команда:
rpm2cpio <rpm_name>.rpm| cpio -idmv
Я сделал Трассирование на идентификатор процесса и обнаружил, что его всегда висел на некоторой системе записи вызова
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 вопроса:
- Может кто-то выяснить, что здесь проблема? Почему это происходит, когда размер оборотов превышает 25 МБ.
- Есть ли какой-либо другой способ я могу извлечь содержимое rpm из python?
Пожалуйста, разместите код python, который вы использовали. Вы перенаправили stdout на PIPE, а затем забыли прочитать трубу, как предлагает один из нижеперечисленных ответов? Мы не можем отлаживать это, не требуя отладки кода. – tdelaney