Módulo de subprocesso do Python não retorna stdout no segfault
Estou executando um executável C do Python e este executável, por vezes, segfaults. Quando segfaults, o módulo de subprocesso não retorna nada em stdout ou stderr.
Código de amostra:
<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>
A fonte paraa.out
é:
<code>int main() { printf("hello world\n"); int x = 1 / 0; } </code>
A saída de./a.out
é:
<code>hello world Floating point exception </code>
A saída do código Python é (no Linux, python 2.7):
<code>out: "" err: "" -8 </code>
Existe uma maneira de obter a saída do executável, mesmo se ele falhar?
Um método genérico para traduzir o código de retorno para uma mensagem de string também seria bom.