Python子进程:返回值

2024-05-18 23:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Python模块,它使用子进程来查看进程是否已运行,并获取其PID。到目前为止,我已经完成了运行进程的部分

进程显然在运行,但是这段代码有问题,所以它抛出了我的自定义异常returnfalse值

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,但仍然工作


Tags: echocmd进程sysargsloginrunningcommand

热门问题