C++;到python通信。多个io流? Python程序打开了C++程序的一个新过程,并正在读取进程STDUT。 到目前为止没有问题

C++;到python通信。多个io流? Python程序打开了C++程序的一个新过程,并正在读取进程STDUT。 到目前为止没有问题,python,process,communication,iostream,Python,Process,Communication,Iostream,但是有可能有多个这样的流进行通信吗?如果我也误用stderr,我可以得到两个,但不能更多。破解这个问题的简单方法是使用临时文件。是否有更优雅的东西不需要绕道文件系统 PS:*也欢迎nix特定的解决方案听起来您想要的是使用套接字进行通信。这两种语言都允许打开原始套接字,但您可能也希望签出该项目,因为它在消息传递方面有一些额外的优势。在和中查看他们的hello world。在unix系统上;打开子进程的常用方法是使用fork(),这将使任何打开的文件描述符(表示打开的文件或套接字的小整数)在子进程和

但是有可能有多个这样的流进行通信吗?如果我也误用stderr,我可以得到两个,但不能更多。破解这个问题的简单方法是使用临时文件。是否有更优雅的东西不需要绕道文件系统


PS:*也欢迎nix特定的解决方案

听起来您想要的是使用套接字进行通信。这两种语言都允许打开原始套接字,但您可能也希望签出该项目,因为它在消息传递方面有一些额外的优势。在和中查看他们的hello world。

在unix系统上;打开子进程的常用方法是使用
fork()
,这将使任何打开的文件描述符(表示打开的文件或套接字的小整数)在子进程和父进程中都可用,然后使用
exec()
,这也允许新的可执行文件使用在旧进程中打开的文件描述符。此功能保留在
subprocess.Popen()
调用中(可使用
close\u fds
参数进行调整)。因此,您可能要做的是使用
os.pipe()
来创建用于通信的套接字对,然后使用
Popen()
来启动另一个进程,其中每个fd的参数都是通过上次调用
pipe()
返回的,以告诉它应该使用哪个fd。

假设使用windows机器。 您可以尝试使用剪贴板来在Python进程和C++ ++之间进行信息交换。

指定一些独特的进程ID,然后在Python端将其写入剪贴板…现在只需在C++侧解析字符串即可。 它类似于使用临时文件,但都在内存中完成。。。。。但缺点是不能将剪贴板用于任何其他应用程序。


希望它对传统的同步编程和标准Python库有所帮助,您所要求的很难实现。相反,如果考虑使用异步编程模型和库,这是小菜一碟。描述了如何轻松地与任意多个流程进行通信。诚然,有一种学习曲线扭曲了,但这是非常值得的努力。

如果你采用这种方法,你可能想看看如何处理FD的C++侧。