[TOC]
问题
import commands as subprocess
status, _ = subprocess.getstatusoutput("ps -elf|grep fuckU")
# status:
# 255
-
这里的status按照grep的定义其实应该返回1,也就是没有grep到匹配项,在shell中echo $? 结果为1
但是python2
的getstatusoutput
获取的并不是os.exitcode()
而是os.wait()
的返回值。 python3
由于使用的是subprocess = modified(commands + subprocess)
,同样执行status, _ = subprocess.getstatusoutput("ps -elf|grep fuckU")
得到的status为正确的1
我是怎么解决这个问题
兼顾Python2和Python3的使用习惯,使用google开源的subprocess32代替commands
什么是subprocess32
谷歌将Python32的subprocess移植到了python2版本中。据说这是线程安全的版本。
最新的Python32版本为3.5.3也就是将python3.5.3中的subprocess基本功能移植到了Python2中。但是subprocess32不包含原本commands