簡體   English   中英

Python子進程:返回值不正確

[英]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其中pPopen對象。 Popen對象肯定不等於零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM