2009-11-08 41 views
20

Tôi không chắc giá trị trả lại của subprocess.call() là gì.Giá trị trả về của subprocess.call() là gì?

  • Tôi có thể giả định giá trị bằng không một cách an toàn sẽ luôn có nghĩa là lệnh được thực hiện thành công?

  • Giá trị trả về có tương đương với lệnh thoát của lệnh trình bao không?

Ví dụ: đoạn mã sau có hoạt động với bất kỳ lệnh nào trên Linux không?

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

hãy soi sáng cho tôi :-)

Trả lời

7

Nó là mã trở lại, nhưng hãy nhớ nó tùy thuộc vào tác giả của tiến trình con gì mã trở lại nghĩa là gì. Có một nền văn hóa mạnh mẽ của 0 có nghĩa là thành công, nhưng không có gì thực thi nó.

4

Bạn đang ở lòng thương xót của các lệnh mà bạn gọi. Hãy xem xét điều này:

test.py

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

Sau đó chạy mã của bạn (với cmd = 'test.py') sẽ cho kết quả THÀNH CÔNG !!

chỉ vì test.py không tuân thủ quy ước trả về giá trị khác 0 khi nó không thành công.

Các vấn đề liên quan