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机制与之通信的服务器似乎不是什么坏主意。在

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值