我有一个脚本 vbs,它将一些数据重定向到 myApp 的标准输入(在 Windows 中用 C 语言编写)。如果 myApp 在 myApp 找到第一个 myApp 会话的 PID 并将通过 stdin 接收的输入重定向到处理 stdin 的 myApp 的第一个会话的 stdin 之前已经启动了 myApp。因此,当 myApp 接收到标准输入并且没有其他 myApp 实例正在运行时,它会处理标准输入并对其进行处理。所以问题是:如何将标准输入从一个应用程序重定向到另一个知道这个 secnd spp 的 PID 的应用程序?语言 = C 平台 = MSwindows
问问题
960 次
2 回答
1
这对你有用吗?http://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx
本文使用匿名管道创建具有重定向 IO 的子进程,您可以使用命名管道。使用此功能: http: //msdn.microsoft.com/en-us/library/aa365144%28VS.85%29.aspx您可以测试命名管道是否已经存在 - 如果不存在,您可以创建一个并等待它的输入。
我不确定将多个文件写入同一个命名管道 - 我假设所有数据都像一个文件一样通过,所以我会使用一个命名管道作为协商器,它为每个客户端实例化一个新的命名管道并添加它的管道到要等待的管道列表。通过新管道使用消息关闭它。
我不认为(如果我错了,请有人纠正我)重定向另一个进程的句柄很容易。
于 2010-01-22T22:13:09.730 回答
0
好的,有机会编写程序的源代码,我将转向命名管道的想法。App1的主进程会检查App的另一个实例(即App0)是否已经在运行。如果是这样,App1 接收到的标准输入将被重定向到命名管道 X。App0 继续使用命名管道 X 接收输入。因此 App0 和所有其他 App 实例 (App2,e,4...) 将通过命名管道进行通信. 非常感谢 NineFingers,你很有帮助!
于 2010-01-23T11:35:06.073 回答