在Python中打开持久shell

时间:2015-02-19 19:13:20

标签: python shell

我需要打开一个"持久的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;当我稍后回到它的时候。

我希望这是有道理的,谢谢。

1 个答案:

答案 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