2009-11-08 38 views
20

subprocess.call()'un dönüş değerinin ne anlama geldiğinden emin değilim.subprocess.call() öğesinin dönüş değeri nedir?

  • Sıfır değerinin her zaman, komutun başarıyla yürütüldüğü anlamına geldiğinden emin olabilir miyim?

  • Dönüş değeri, bir kabuk komutunun çıkış stausuna eşdeğer mi?

Örneğin, aşağıdaki kod parçası Linux'ta neredeyse her komut için çalışacak mı?

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!!" 

cevap

7

Bu dönüş kodu resmi belgelerini kontrol, ancak dönüş kodu ne anlama geldiğini alt süreç yazarı kalmış aklında tutabilir. Başarı anlamına gelen 0 güçlü bir kültür var, ama onu zorlayan hiçbir şey yok.

4

Aradığınız komutların merhametindesiniz. bu düşünün:

test.py

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

Sonra (cmd = 'test.py' ile) kod çalıştıran BAŞARI neden olacaktır !! Sadece test.py, başarılı olmadığında sıfır olmayan bir değer döndürme kuralıyla uyuşmadığı için

.