python处理输入输出_Python使用管道处理输入/输出

我编写一个C++程序,它将运行Python 3解释器作为子进程,然后连接两个Linux匿名管道——一个到它的^ {CD1>}和^ {CD2>},第二个到解释器的^ {CD3>},然后通过这些通道与它通信。在

我需要在交互模式下运行Python,即使用输入管道向它传递一个命令,然后在输出管道上等待答案。一切都很好,但似乎Python只能在stdout和{}连接到tty时才能运行交互模式

Python文档引用:The interpreter operates somewhat like the Unix shell: when called with standard input connected to a tty device, it reads and executes commands interactively; when called with a file name argument or with a file as standard input, it reads and executes a script from that file.

实际上,当我用管道而不是tty运行解释器时,在命令被发送之后,我在响应管道中看不到任何东西。在

那么-我可以用某种方式解决这种行为,让python3解释器完全按照用户从终端启动的方式工作吗?在

简单来说,问题是:

我需要将Python集成到我的C++服务器应用程序中,以允许客户端执行Python命令。

在服务器中嵌入解释器看起来不是个好主意,主要是出于安全考虑(用户可能会损坏服务器或服务器的数据,而且服务器是以我不想授予用户的某些权限运行的)。在

另一种可能的解决方案是以CLI方式(命令模式)使用解释器。主要的问题是-然后我需要导入一些模块并预执行一些代码,以向用户提供我的服务器环境和一些API。在用每一个命令调用解释器之前做这件事太重了(这些操作相当复杂,包括建立网络连接)

因此,在一个单独的进程中运行解释器,并使用IPC机制与之通信的服务器似乎不是什么坏主意。在

不管怎样,如果你有什么建议的话,我很乐意看看你的建议。在


版权声明:本文为weixin_39980575原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。