Модуль подпроцесса Python не возвращает stdout при segfault

Я запускаю исполняемый файл C из Python, и этот исполняемый файл иногда дает сбои. Когда он segfaults, модуль подпроцесса ничего не возвращает в stdout или stderr.

Пример кода:

import subprocess

proc = subprocess.Popen(['./a.out'], stdin=subprocess.PIPE,
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
print 'out: "%s"' % out
print 'err: "%s"' % err
print proc.returncode

Источник для a.out:

int main() {
    printf("hello world\n");
    int x = 1 / 0;
}

Вывод ./a.out:

hello world
Floating point exception

Вывод Python код (в Linux, python 2.7):

out: ""
err: ""
-8

Есть ли способ получить вывод исполняемого файла, даже если он выйдет из строя?

Общий метод преобразования кода возврата в строковое сообщение тоже не помешал бы.

9
задан vy32 14 May 2012 в 03:11
поделиться