español - subprocess python example
¿Cuál es el valor de retorno de subprocess.call()? (3)
No estoy seguro de lo que significa el valor de retorno de subprocess.call()
.
¿Puedo asumir con seguridad que un valor cero siempre significará que el comando se ejecutó correctamente?
¿Es el valor de retorno equivalente al estado de salida de un comando de shell?
Por ejemplo, ¿funcionará el siguiente fragmento 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!!"
Por favor iluminame :-)
Es el código de retorno, pero tenga en cuenta que depende del autor del subproceso lo que significa el código de retorno. Existe una fuerte cultura de 0 que significa éxito, pero no hay nada que lo imponga.
Estás a merced de las órdenes que llamas. Considera esto:
test.py
#!/usr/bin/env python
success=False
if not success:
exit()
Luego, ejecutar su código (con cmd = ''test.py'') resultará en ÉXITO !!
simplemente porque test.py no cumple con la convención de devolver un valor distinto de cero cuando no tiene éxito.
Sí, Subprocess.call
devuelve "código de retorno del proceso real".
Puede consultar la documentación oficial de Subprocess.call y Subprocess.Popen.returncode