2009-11-08 12 views
20

Ich bin mir nicht sicher, was der Rückgabewert von subprocess.call() bedeutet.Was ist der Rückgabewert von subprocess.call()?

  • Kann ich sicher annehmen, dass ein Nullwert immer bedeutet, dass der Befehl erfolgreich ausgeführt wurde?

  • Entspricht der Rückgabewert dem Ausgangsstatus eines Shell-Befehls?

  • Zum Beispiel funktioniert der folgende Code für praktisch jeden Befehl unter 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!!" 
    

    Bitte erleuchte mich :-)

    Antwort

    7

    Es ist der Return-Code, aber im Kopf behalten, um den Autor des subprocess was der Return-Code bedeutet, dass es nach oben. Es gibt eine starke Kultur von 0, die Erfolg bedeutet, aber nichts wird durchgesetzt.

    4

    Sie sind den Befehlen ausgesetzt, die Sie aufrufen. Bedenken Sie:

    test.py

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

    Dann wird Ihr Code ausgeführt wird (mit cmd = 'test.py') wird in ERFOLG führen !!

    nur weil test.py nicht der Konvention entspricht, einen Wert ungleich Null zurückzugeben, wenn es nicht erfolgreich ist.

    Verwandte Themen