我有2个Windows控制台应用程序,从标准输入读取并写入标准输出。我想假设我没有任何源代码(实际上我通常有其中一个的源代码)。
我想将一个的标准输出指向另一个的标准输入,反之亦然,从而允许通信(目标是允许两个播放特定游戏的节目相互播放)。
如何做到这一点?我愿意做一些C / C ++编程或其他任何需要的东西。
奥伦。
答案 0 :(得分:1)
这在控制台中是不可能的,因为流重定向总是形成非循环图。
要获得您正在寻找的循环重定向,您可以编写一个调用两个可执行文件的小程序,并管理每个进程的输入和输出流的连接。连接的每对流(来自每个程序的输入流和输出流)将需要一个线程从输出流中提取数据并将其推入输入流。因此,您将需要2个线程,因为有2组输入/输出流对。
以下是连接各种流的步骤:
缓冲区是活动线程,从输入端读取并写入输出端。
缓冲区必须检测输入端的流末端并相应地关闭输出端。当双方都关闭时,运行缓冲区的线程可以退出。
答案 1 :(得分:0)
您必须将两个进程转换为父进程的子进程,这将在两个进程之间传递消息,并且您必须编写父进程。
有很多语言可以解决。我个人会用Python中的subprocess模块来解决这个问题。这基本上是_popen()的包装器,可以在C / C ++中访问,但如果快速的Google搜索是任何指示器,那么学习Python比使用它更容易。如果您了解Ruby,那么Ruby就有一个类似的库。
在任何情况下,我认为使用套接字比使用stdin
和stdout
更简洁,更可靠,如果这是一个选项。