subprocess模块中只定义了一个类,Popen
p=Popen(["nslookup","www.baidu.com","8.8.8.8"],shell=True)
# 这句话执行完,会打印 nslookup www.baidu.com 8.8.8.8 的结果在屏幕上
p=Popen(["/usr/sbin/bind9/named","-f","/etc/named/named.conf"])
#coding:utf-8
from subprocess import Popen
import time
#进程被创建后自己去执行了,python继续往下走,开始打印Main process....
#当p有输出时,送往p的stdout,默认是None,即继承其父的,即运行当前python的终端
#所以p的结果也会在终端中显示,跟主进程的打印交替
p=Popen(["nslookup","www.baidu.com","8.8.8.8"],shell=True)
for i in range(10):
print "Main Process.....%d"%i
time.sleep(0.1)
#coding:utf-8
from subprocess import Popen,PIPE
import time
#指定子进程的stdout为缓冲区,而不是终端屏幕(继承自父)
p=Popen(["nslookup","www.baidu.com","8.8.8.8"],shell=True,stdout=PIPE,stderr=PIPE)
for i in range(10):
print "Main Process.....%d"%i
time.sleep(0.1)
#把缓冲区里东西打出来
print p.stderr.read()
print p.stdout.read()
stdout=open('log.log','w')
#coding:utf-8
#p.py
import subprocess as sbp
import time
p=sbp.Popen(["python","child.py",],shell=True)
for i in range(10):
print "p.returncode :",p.returncode
time.sleep(2)
#coding:utf-8
#child.py
import time
print "child process is started, It will be terminated in 10 seconds"
time.sleep(10)
print "child process exits with returncode -1"
exit(-1)
p.returncode : None
child process is started, It will be terminated in 10 seconds
p.returncode : None
p.returncode : None
p.returncode : None
p.returncode : None
p.returncode : None
child process exits with returncode -1
p.returncode : None
p.returncode : None
p.returncode : None
p.returncode : None
#coding:utf-8
#p.py
import subprocess as sbp
import time
p=sbp.Popen(["python","child.py",],shell=True)
for i in range(10):
print "p.poll(): ",p.poll()
time.sleep(2)
p.poll(): None
child process is started, It will be terminated in 10 seconds
p.poll(): None
p.poll(): None
p.poll(): None
p.poll(): None
p.poll(): None
child process exits with returncode -1
p.poll(): -1
p.poll(): -1
p.poll(): -1
p.poll(): -1
#coding:utf-8
from subprocess import Popen,PIPE
p=Popen(["ipconfig",],shell=True,stdout=PIPE)
p.wait() #这句一定要写,要不然可能ipconfig的结果还没出来呢,你就开始处理它的输出文本了!
out_text=p.stdout.read()
# do something with out_text.....
print out_text[:10]
上面例子只是举个例子,没有真正提取ip地址,明白意思即可,提取ip地址还需用到正则表达式,不是今天重点。。。