0

我试图与一个多壳程序交互,一个是用python编写的,另一个是用perl编写的,另一个是用ruby编写的。

认为他们运行的终端就像命令一样简单

$python demo.py

Option1
Option2
Option3
Option4

app1>1

#Menu 1 options
Option1 from menu 1
Option2 from menu 1
Option3 from menu 1
Option4 from menu 1

app1>2

#Option 2 from menu1 options
Option2.1 from menu 1
Option2.2 from menu 1
Option2.3 from menu 1
Option2.4 from menu 1

app1>2

所有 3 个应用程序运行几乎相同,但我尝试使用 php shell_exec 命令、python OS 模块,但没有人能够与子菜单和程序的工作流程进行交互......

我能够运行:

 import os   
 list = os.popen('pwd').read()
 print list

或者

<?php shell_exec(´ls -las´)?>

有没有人将没有 GUI 界面的 Shell 程序迁移到 gui Web 界面的经验?(我正在考虑制作一个包装器来与这些程序进行交互)

4

1 回答 1

0

您将需要使用subprocess 模块来创建子流程,然后使用interact方法或 .stdin 和 .stdout 属性(它们是类似文件的对象)与它进行交互。

但是,您必须在 subprocess.Popen 调用中传递 stdin=subprocess.PIPE 和 stdout=subprocess.PIPE ,否则您将无法进行交互。

如果您想将其绑定到 Web 应用程序或其他东西,您还必须让它“在后台”运行,以便用户可以在多个 HTTP 请求期间与程序交互。

于 2013-07-09T00:22:14.103 回答