python subprocess新建进程

Doc: https://docs.python.org/2/library/subprocess.html#subprocess.Popen

参考:https://www.cnblogs.com/vamei/archive/2012/09/23/2698014.html

程序:

用child=subprocess.Popen()后,程序就会多出一个进程来执行指定程序(如外部sh), 如果需要等这个进程结束后的结果,就要加入child.wait()等待。如果新进程是一个一直要执行的进程,就不要加child.wait()了。 中间可以child.kill(), child.terminate()。

 

还可以用PIPE和comunicate()和获取进程的标准输出:

程序:

结果:

 

还可以用PIPE和comunicate()和获取进程的标准输入:

程序:

结果:

这里ls在正常shell下工作不需要有标准输入。所以给它标准输入”-la”是达不到”ls -la”效果的。

 


然后,subprocess.call(), subprocess.check_call(), subprocess.check_output()是封装了subprocess.Popen()的高级别函数。但好像都要把主进程杜塞,等待子进程完成后返回, 这样的应用就达不到多进程的效果了。

 

打赏