dans un Question associée , j'ai demandé où trouver la documentation de la fonction C "attend". C'était une tentative de déterminer les codes de retour pour le module Commands.getstatusOutput (). Stackoverflow a eu lieu, mais la documentation n'a pas aidé. Voici ce qui me puzzle Me:
$ ls /fail ; echo $? ls: cannot access /fail: No such file or directory 2
4 Réponses :
wow. L'aperçu de la multiplication par 256 m'a eu lieu là-bas. À la recherche de "Commandes Python +256", m'a eu à un module Python de la semaine a > Article qui explique ce qui se passe. Voici un extrait de cette page: P> La fonction getStatusoutput () exécute un
commande via la coquille et retourne le
Code de sortie et la sortie de texte (stdout
et stardr combiné). Les codes de sortie
sont les mêmes que pour la fonction c
Attendez () ou Os.Wait (). Le code est un
Nombre 16 bits. Le bas d'octet contient
le numéro de signal qui a tué le
traiter. Lorsque le signal est zéro, le
High Octet est le statut de sortie de la
programme. Si un fichier de base a été produit,
Le bit haut de l'octet bas est défini. P>
blockQuote> et une partie du code de Doug: p>
Le retour de OS.System (CMD) semble fonctionner de la même manière aperçu de la multiplication par 256 code>
regarder Nous voyons Attendez l'achèvement d'un processus enfant et renvoyez un tuple contenant son indication d'état PID et de sortie: un nombre de 16 bits, dont l'octet faible est le numéro de signal qui a tué le processus et L'accent était mis. Je conviens que ce "codage" n'est pas terriblement intuitif, mais au moins il était assez évident d'un coup d'œil qu'il était multiplié / décalé de bit. P> p> Commands.py code>:
STS code> contient la valeur de
OS.Popen (.. .). Fermer () Code>. En regardant cette em> documentation ,
Os.popen (...). Fermer () Code> Renvoie la valeur de
OS.WAIT CODE>
: P>
OS.Wait () code> p>
Merci de l'accent, j'étais assez confus par ce que je voyais jusqu'à ce que je lisais ça ..
Il existe un ensemble de fonctions dans le module code> OS code> ( Par exemple, pour obtenir le code de sortie, vous devez utiliser Une meilleure idée serait de basculer vers le module code> sous-processus code>. p> os.wifcontinuer code>,
os.wifstopped code>,
os.wtermsig code>,
os.wcoredump code>,
os.wifexited code>,
os.wexittstatus code>,
os.wifsignaled code>,
os.wstopsig code>), qui correspond aux macros de Attendez ( 2) manuel. Vous devez les utiliser pour interpréter le code d'état. P>
os.wexittstatus (status) code> p>
Je pense que la détection de code est incorrecte.
"Si un fichier de base a été produit, le bit haut de l'octet bas est défini." signifie 128. p>
donc je pense que la ligne de base doit être p>
Le Réponse de @schof répond à la question "lors de l'utilisation de
Commands.getstatusoutput () Code> Pourquoi le Codes de sortie multipliés par 256? " directement et avec le code exemple. Les deux autres réponses plus ou moins disent "Utiliser
sous-processus code> au lieu de
Commands.getstatusoutput () code>" ou "Voici comment utiliser le sous-processus".