subp = subprocess.Popen(["d:/T1.exe"], shell=True, stdout=subprocess.PIPE, bufsize=0)
subp.stdout.read()
但是发现read和readline函数是阻塞方式调用的,一定要subprocess运行结束才能返回数据。
setblocking(0)之后就是非阻塞的。 select模块只是说能够同时处理多个socket,至于这些socket是阻塞还是非阻塞,都没有关系。当然从性能上考虑,现在的趋势是select+非阻塞。这里用到subprocess内置库
subprocess.check_output() 与 subprocess.Popen() 一个是阻塞另一个是非阻塞
主要讲 subprocess.Popen()
p = Popen(shell_str, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
如果不加shell=True,shell_str要写成list或者tuple类型
p.wait() 如果0是正常,1是有异常
p.stdin.read()
p.stdout.read()
p.stderr.read()
stdin , stdout, stderr 分别是标准输出, 正常输出, 错误输出
例子:
from subprocessimport *
p = Popen(shell_str.split(' '), stdin=PIPE, stdout=PIPE, stderr=PIPE)
p_statuscode = p.wait()