import Subprocess
即可引入模块
subprocess.Popen(['ping 192.168.1.1'], shell=True)
即可运行命令。
这时,ping的stdout是作为python的stdout直接输出的,如果不想直接输出,想让它在后台安安静静的运行,可以把stdout重定向到程序的内置管道subprocess.PIPE
stdin,stderr都可以重定向
subprocess.Popen(['ping 192.168.1.1'], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE,stderr=subprocess.PIPE)
这条程序会创建子程序,然后立即返回一个subprocess.Popen的对象,要是想让线程阻塞住,等待命令运行完成,可以使用wait函数。例如:
p = subprocess.Popen(['ping 192.168.1.1'], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
p.wait()
这样,程序就会阻塞在wait函数处。
有的时候,Popen运行的程序也会被阻塞住,这可能是程序的stdout太大了,把管道的缓冲区填满了,所以进程会被阻塞,所以最好使用comminute函数
_WAIT_ = p.comminute()