python中进程的使用

进程相关模块

os/sys

  • os.popen
  • os.system (调用系统内置命令行)
  • sys.exit os.abort 终止,abort是强制终止
  • exec家族 (将会接管控制权利)

关os.popen和system的区别,大致如下

1.返回值不同。popen返回类似于管道流,可以读取输出结果;system返回的是状态码

2.system会直接输出结果,就像调用shell一样。

>>> p=os.popen('ls /home')
>>> print p
<open file 'ls /home', mode 'r' at 0x7f8e3c7635d0>
>>> p.readlines()
['nagios\n', 'nova\n', 'rabbitmq\n', 'wz\n']

>>> s=os.system('ls /home')
nagios  nova  rabbitmq  wz
>>> print s
0



subprocess  更强大的功能,可替代os/sys

  • Popen  
  • call  对Popen的简化,参数列表相同,返回code。可以用来替代os.system有优势 1可用参数列表,不用字符串转义 2 更好的处理返回值
  • check_all   同call,当返回值不是0的时候报错 CallProcessError
Popen例子1,这里可以设置stdout stdin stderr 其值可以设置为None  PIPE 和文件描述符

pingP = subprocess.Popen(args="ping www.baidu.com",shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
pingP.wait()
pingP.pid
pingP.returncode
print pingP.stdout.read()

使用communicate,communicate会占用缓存,当数据量大的时候尽量不要用

p = subprocess.Popen(args="cat",shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
pout,perr=p.communicate(input="hello world!")
print pout


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值