如何将stdin从我的应用重定向到另一个知道其PID的应用(C,在windows中)

如何将stdin从我的应用重定向到另一个知道其PID的应用(C,在windows中),c,windows,stdin,pid,C,Windows,Stdin,Pid,我有一个脚本vbs,它将一些数据重定向到myApp的stdin(在Windows中用C编写)。 如果myApp在myApp找到第一个myApp会话的PID并将通过stdin接收的输入重定向到处理stdin的myApp第一个会话的stdin之前已启动myApp。 因此,当myApp收到一个stdin并且没有其他myApp实例在运行时,它会处理stdin并处理它。 所以问题是:如何将stdin从一个应用重定向到另一个知道这个secnd spp的PID的应用? 语言=C platform=MSwind

我有一个脚本vbs,它将一些数据重定向到myApp的stdin(在Windows中用C编写)。 如果myApp在myApp找到第一个myApp会话的PID并将通过stdin接收的输入重定向到处理stdin的myApp第一个会话的stdin之前已启动myApp。 因此,当myApp收到一个stdin并且没有其他myApp实例在运行时,它会处理stdin并处理它。 所以问题是:如何将stdin从一个应用重定向到另一个知道这个secnd spp的PID的应用? 语言=C platform=MSwindows这对你有用吗

本文使用匿名管道创建具有重定向IO的子进程,您可以使用命名管道。使用此函数:您可以测试命名管道是否已经存在-如果不存在,您可以创建一个并等待其输入

我不确定r.e.是否有多个文件写入同一个命名管道-我假设所有数据都像一个文件一样通过,因此我会使用一个命名管道作为协商者,为每个客户端实例化一个新的命名管道,并将其管道添加到要等待的管道列表中。通过新管道以消息关闭它

我认为(如果我错了,请有人纠正我)重定向另一个进程的句柄并没有那么容易。

这对您有用吗

本文使用匿名管道创建具有重定向IO的子进程,您可以使用命名管道。使用此函数:您可以测试命名管道是否已经存在-如果不存在,您可以创建一个并等待其输入

我不确定r.e.是否有多个文件写入同一个命名管道-我假设所有数据都像一个文件一样通过,因此我会使用一个命名管道作为协商者,为每个客户端实例化一个新的命名管道,并将其管道添加到要等待的管道列表中。通过新管道以消息关闭它


我认为(如果我错了,请有人纠正我)重定向另一个进程的句柄没有那么容易。

好的,有机会编写程序的源代码,我将转向命名管道的想法。 App1的主进程将检查App的另一个实例(即App0)是否已在运行。如果是这样,App1接收的stdin将重定向到命名管道X。 App0使用命名管道X不断接收输入。 因此,App0和所有其他App实例(App2、e、4…)将通过命名管道进行通信。
非常感谢9位朋友,你们帮了我大忙

好的,如果有机会编写程序的源代码,我将转向命名管道的想法。 App1的主进程将检查App的另一个实例(即App0)是否已在运行。如果是这样,App1接收的stdin将重定向到命名管道X。 App0使用命名管道X不断接收输入。 因此,App0和所有其他App实例(App2、e、4…)将通过命名管道进行通信。
非常感谢9位朋友,你们帮了我大忙

一些想法:命令行参数、文件I/O、直接输入(如模拟鼠标单击/按键),使用AutoHotKey(或它的库,因为它是用C编写的)之类的程序,如果您想让我详细介绍其中一个,请告诉我。一些想法:命令行参数、文件I/O、直接输入(例如模拟鼠标点击/按键),使用AutoHotKey(或者它的库,因为它是用C编写的)之类的程序,如果您想让我详细介绍其中的一个,请告诉我。