我需要打开一个"持久的shell"来自Python内部。
在那个shell中,我需要启动一个进程,我需要在将来与Python代码进行单独调用时进行通信。从某种意义上说,我需要一个" shell手柄"很像我可以与之交谈的文件句柄,只要shell打开,任何正在运行的进程都会继续运行。
所以,我需要这样的东西:
s = open_shell() <-- handle to shell is now "s"
s.call(run_some_process_in_the_shell())
...在Python中做其他事情;但是这个过程一直在shell&#34; s&#34; ...
s.call(interact_with_running_process())
..更有成效......
s.call(interact_with_running_process_again())
等
我目前的理解可能是错误的,确保过程&#34; run_some_process_in_the_shell()&#34;可以被调用,但它会立即退出。也就是说,该过程不会在&#34; s&#34;当我稍后回到它的时候。
我希望这是有道理的,谢谢。
答案 0 :(得分:0)
这就是我最终做的事情:
安装pexpect:pip install pexpect
然后“导入pexpect”并且:
s = pexpect.spawn("/bin/bash")
s.sendline(run_some_process_in_the_shell())
就是这样。
现在,我还需要检查特定进程是否正在运行。为了检查,我做了:
s.sendline("ps")
s.expect(name_of_process_I_expect_to_be_running)
print s.after <--- prints name of process that is running (sanity check)
- denvar