最近做一个小工具需要用到Python的字进程,看了一下Python的API,subprocess模块可以就可以实现,并且还挺简单
要实现一个简单的自进程,只需要
- import sys, os, subprocess
- p = subprocess.Popen(["ls", "-l"], shell=False, stdin=None, stdout=None, stderr=None)
- print p.pid
- print p.returncode
此时,pid将是子进程的ID号,如果子进程正常推出,returncode将会是None。
也可以使用以下代码创建子进程
- import sys, os, subprocess
- retcode=subprocess.call(["ls", "-l"], shell=False, stdin=None, stdout=None, stderr=None)
- print retcode
此时,如果子进程正常推出,retcode将会是0。
另外,如果期望不要输出创建出来的子进程的打印信息,可以将方法参数中的stdout和stderr设置为subprocess.PIPE。
以下是一个小例子,创建一个子进程p1,然后再创建一个子进程p2用来结束p1的执行。
- import sys, os, subprocess
- p1 = subprocess.Popen(["sleep", "60"], shell=False, stdin=None, stdout=None, stderr=None)
- print p1.pid
- print p1.returncode
- p2 = subprocess.Popen(["kill", str(p1.pid)], shell=False, stdin=None, stdout=None, stderr=None)
- print p2.pid
- print p2.returncode