subprocess使用
import subprocess
p = subprocess.Popen('ls -l', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=1)
- bufsize: 缓冲区大小. 当创建标准流的管道对象时使用默认 -1.
0: 不使用缓冲区
1: 表示 行缓冲, 仅当 universal_newlines=True时可用, 也就是文本模式
正数: 表示缓冲区大小
负数: 表示使用系统默认的缓冲区大小
- Popen 对象方法
1. poll(): 检查进程是否终止: 如果终止返回 returncode, 否则返回 None
2. wait(): 等待子进程终止
3. communicate(input,timeout): 和子进程交互, 发送和读取数据.
4. terminate(): 停止子进程. 发送 SIGTERM信号到子进程
5. kill(): 杀死子进程. 发送 SIGKILL信号到子进程
- 实例
import time
import subprocess
def cmd(command):
subp = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")
subp.wait(2)
if subp.poll() == 0:
print(subp.communicate()[1])
else:
print("失败")
cmd("java -version")
cmd("exit 1")