我正在编写一个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,但仍然工作
r
保存返回代码;您测试了if (not p == 0):
,其中p
是Popen
对象^{<对象肯定不等于零相关问题 更多 >
编程相关推荐