[英]Python subprocess: return value incorrect
我正在編寫一個使用子進程的Python模塊,以查看進程是否已運行並獲取其PID。 到目前為止,我已經完成了運行過程的一部分。
進程顯然在運行,但是此代碼有問題,因此它引發了我的自定義異常ReturnFalseValue。
def sys_userwrapper(user, cmd):
cmd = "su " + user + " --login --command=\"" + cmd + "\""
dbgPrint("running: " + cmd)
args = shlex.split(cmd)
p = subprocess.Popen(args)
p.wait()
r = p.returncode
if (not p == 0):
raise ReturnValueFalse
else:
return p.pid
這是我對該方法的小單元測試...
>>> relayman.sys_userwrapper("oper", "echo helloworld")
Debug: running: su oper --login --command="echo helloworld"
helloworld
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/relayman.py", line 32, in sys_userwrapper
raise ReturnValueFalse
relayman.ReturnValueFalse
如您所見,它會打印HelloWorld,但是由於某種原因,它認為有一個錯誤,好像echo沒有返回0仍然起作用。
r
保留您的返回碼; 您測試了if (not p == 0):
Popen
其中p
是Popen
對象。 Popen
對象肯定不等於零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.