Moduł podprocesu Pythona nie zwraca stdout w segfault

Używam pliku wykonywalnego C z Pythona i ten plik wykonywalny czasami segfaultuje. Po segregacji moduł podprocesu nie zwraca niczego w stdout lub stderr.

Przykładowy kod:

<code>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
</code>

Źródło dlaa.out jest:

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

Wyjście z./a.out jest:

<code>hello world
Floating point exception
</code>

Wyjście kodu Pythona to (w Linuksie, python 2.7):

<code>out: ""
err: ""
-8
</code>

Czy istnieje sposób, aby uzyskać wyjście pliku wykonywalnego, nawet jeśli ulegnie awarii?

Ogólna metoda tłumaczenia kodu powrotu na wiadomość tekstową również byłaby miła.

questionAnswers(2)

yourAnswerToTheQuestion