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.