2009-11-08 17 views
20

No estoy seguro de qué significa el valor de retorno de subprocess.call().¿Cuál es el valor de retorno de subprocess.call()?

  • ¿Puedo suponer con seguridad que un valor cero siempre significará que el comando se ejecutó correctamente?

  • ¿El valor de retorno es equivalente al estado de salida de un comando de shell?

Por ejemplo, ¿funcionará la siguiente pieza de código para prácticamente cualquier comando en Linux?

cmd = "foo.txt > bar.txt" 
ret = subprocess.call(cmd, shell=True) 
if ret != 0: 
    if ret < 0: 
     print "Killed by signal", -ret 
    else: 
     print "Command failed with return code", ret 
else: 
    print "SUCCESS!!" 

favor ilumíneme :-)

Respuesta

7

Es el código de retorno, pero tenga en cuenta que es hasta el autor del subproceso lo que significa que el código de retorno. Hay una cultura fuerte de 0 que significa éxito, pero no hay nada que la haga cumplir.

4

Usted está a merced de los comandos que usted llame. Considere esto:

test.py

#!/usr/bin/env python 
success=False 
if not success: 
    exit() 

A continuación, se ejecuta el código (con CMD = 'test.py') dará lugar a ÉXITO !!

simplemente porque test.py no cumple con la convención de devolver un valor distinto de cero cuando no es exitoso.

Cuestiones relacionadas