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")