有这样一个需求:使用python打开一个sh会话进程,然后持续地执行命令,像我们平时使用命令行一样可交互的,而不是直接run一段shell命令就没了,实现方法是使用subprocess包,
参考例子:
from subprocess import Popen, PIPE, STDOUT
p = Popen('/bin/bash', stdout=PIPE, stdin=PIPE, stderr=STDOUT)
p.stdin.write('touch 123')
p.stdin.write('touch 456')
p.communicate()
解释一下:在Popen里一定要带上参数stdin=PIPE,这样才可以持续向子进程发送消息,像stdin写,其实就是向子进程传参,communicate这个函数是主线程用来等待子线程结束的,也可以使用wait,如果不使用communicate或wait,那么一般子线程还没来得及执行上面两个命令就随着父线程一起死了,大家可以注释掉试试
参考:
https://docs.python.org/zh-cn/3/library/subprocess.html
https://segmentfault.com/q/1010000006766466