Python之subprocess模块的使用
来源:互联网 发布:在家英文网络客服 编辑:程序博客网 时间:2024/06/06 01:19
详细可参考Python的subprocess模块
subprocess.Popen
class Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
用法: args可以是list,也可以是str(shell=True
时)
child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
Popen对象创建后,主程序不会自动等待子进程完成。我们必须调用child.wait()
方法,父进程才会等待。
有三个简便的方法,参数和Popen一样。
subprocess.call()subprocess.check_call()subprocess.check_output()
实际上,上面的几个函数都是基于Popen()的封装,不同的是这三者都会等待子进程完成。成功则返回0。
对于check_call()
和check_output()
,当returncode不是0时,会触发subprocess.CalledProcessError异常,该对象包含有returncode属性和output属性(check_output()
独有)。
杀死创建的进程
child.kill()
或child.terminate()
注意,当shell=True
时,Popen会使用shell来执行命令(Windows对应cmd.exe,Linux对应/bin/sh),所以child.pid
返回的其实是shell的PID。
对于Windows:
child = subprocess.Popen('ping -c4 www.baidu.com',shell=True)subprocess.call(['taskkill', '/F', '/T', '/PID', str(child.pid)])
对于Linux:
child= subprocess.Popen('ping -c4 www.baidu.com', shell=True, preexec_fn=os.setsid) os.killpg(os.getpgid(child.pid), signal.SIGTERM)
参考StackOverflow
阅读全文
0 0
- Python之subprocess模块的使用
- python的subprocess模块使用
- python之subprocess模块
- python 之 subprocess模块
- python模块之subprocess
- Python subprocess模块使用
- Python中subprocess模块的使用
- Python中subprocess模块的使用
- Python中subprocess模块的使用
- Python的subprocess模块
- python 的 subprocess模块
- python模块系列之 - subprocess
- python的subprocess模块使用方法
- subprocess模块的使用例子
- python 的 subprocess模块用法 popen
- python subprocess模块的shell参数问题
- python 的 subprocess模块用法 popen
- python 的 subprocess模块用法 popen
- Vim编辑器的退出
- Javascript的继承方式详解
- 面向对象基础三种基本设计模式
- sdut-离散题目11
- python多线程模块thread
- Python之subprocess模块的使用
- Struts(二)
- IoT通讯技术选型及模型设计的思考
- Android 开发EventBus简单使用
- SpringMVC学习-01天
- Maven知识点扫盲(二)依赖管理
- git初识
- 数据库建立存储过程的意义
- sdut-离散题目12