现象
python subprocess 获取到的pid总是比实际的小1
问题描述
代码如下:用的subprocess.Popen,shell设置为True,有时候获取到的pid为实际的-1
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=path_of_strategy)
# stdout, stderr = p.communicate()
pid = p.pid
原因
shell=True,会使用sh -c cmd ,如果sh命令正常就不会退出,返回的pid是正确的,如果sh -c cmd
执行异常,sh命令会失败,但是sh执行的命令会生成一个子进程,子进程pid正好比sh大1
我的cmd带了特殊字符,需要用引号括起来