微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使两个可执行文件在Windows中双向通信

我有2个Windows控制台应用程序,从标准input读取和写入标准输出。 我想假设我没有任何的源代码(实际上我通常有其中之一的源代码)。

我希望将一个标准输出引导到另一个的标准input,反之亦然,从而允许通信(目标是允许两个玩特定游戏的程序相互竞争)。

如何才能做到这一点? 我愿意做一些C / C ++编程或其他需要的东西。

奥伦。

C标准库中包含了什么?

XOPEN_SOURCE和信号处理

在Windows Embedded Standard上通过批量或类似方式设置Internet时间服务器

Windows标准文件位置

便携式的方式来实现ls的-v标志(即按版本sorting)?

URL中是否允许冒号?

输出从Linuxpipe道中的两个inpdendent文件

在Java位置写入的Linux守护进程

什么是横幅命令的处理?

boost :: filesystem :: path和fopen()

这在控制台中是不可能的,因为流重定向总是形成一个非循环图。

要获得循环重定向,您可以编写一个调用两个可执行文件的@R_502_6267@,并管理每个进程的输入和输出流的接线。 每对连接的流(来自每个程序的输入流和输出流)将需要一个线程来从输出流中提取数据并将其推送到输入流中。 所以,你将需要2个线程,因为有2组输入/输出流对。

以下是连接各种流的步骤:

创建两个缓冲区,B1和B2。

启动程序1,(P1)并获取输入输出流句柄。

将P1输入连接到缓冲器B1的输入侧,将P1输出到缓冲器B2的输出侧。

启动程序2(P2)并获取输入和输出流句柄

将P2输入连接到缓冲器B2的输入侧,将P2输出连接到缓冲器B1的输出侧。 (注意,这个B1 / B2与上面的P1连接相反。)

缓冲区是活动线程,从输入端读取并写入输出端。

缓冲区将不得不检测输入端的流结束,并相应地关闭输出端。 当双方都关闭时,运行缓冲区的线程可以退出

您必须将这两个进程转换为父进程的子进程,这将在两个进程之间传递消息,并且必须编写父进程。

有很多语言可以解决这个问题。就我个人而言,我会用Python中的子进程模块来解决这个问题。 这基本上是一个围绕_popen()的封装,可以用C / C ++来访问,但如果Google的快速搜索是任何指标,那么比使用Python更容易学习Python。 如果你了解Ruby,那么Ruby有一个类似的库。

在任何情况下,我认为使用套接字将是比使用stdin和stdout更干净和更可靠的方法,如果这是一个选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐