En un related question, pregunté dónde encontrar la documentación para la función C "esperar". Este fue un intento de averiguar los códigos de retorno para el módulo commands.getstatusoutput(). Stackoverflow llegó, pero la documentación no ayudó. Esto es lo que me intriga:Cómo interpretar el código de estado en Python commands.getstatusoutput()
#!/usr/bin/python
import commands
goodcommand = 'ls /'
badcommand = 'ls /fail'
status, output = commands.getstatusoutput(goodcommand)
print('Good command reported status of %s' % status)
status, output = commands.getstatusoutput(badcommand)
print('Bad command reported status of %s' % status)
cuando se ejecuta en OS X (Leopard) me sale el siguiente resultado: (. Lo cual coincide con la documentación)
$ python waitest.py
Good command reported status of 0
Bad command reported status of 256
En OS X, haciendo un "ls/Falla ; echo $? " obtiene el siguiente resultado:
$ ls /fail ; echo $?
ls: /fail: No such file or directory
1
Cuando se ejecuta en Linux (Ubuntu Hardy) me sale el siguiente resultado:
$ python waitest.py
Good command reported status of 0
Bad command reported status of 512
En Ubuntu, haciendo "ls/no pasa" consigue un 2:
$ ls /fail ; echo $?
ls: cannot access /fail: No such file or directory
2
Así que Python parece estar multiplicando códigos de estado por 256. ¿Eh? ¿Está esto documentado en alguna parte?
la [respuesta por @Schof] (http://stackoverflow.com/a/1535675/52074) responde a la pregunta "cuando se utiliza' commands.getstatusoutput() '¿por qué los códigos de salida se multiplican por 256?" directamente y con código de ejemplo. Las otras dos respuestas dicen más o menos "use' subprocess' en lugar de 'commands.getstatusoutput()' "o" aquí se explica cómo usar subprocess ". –