获取另一个正在运行的进程的输入/输出[C,perl]

获取另一个正在运行的进程的输入/输出[C,perl],c,linux,perl,C,Linux,Perl,我想知道是否有可能从我的C应用程序中启动Linux应用程序,并能够读取和输入数据到启动的程序中。我应该研究哪些功能才能做到这一点。我知道我可以使用popen()打开应用程序,并可以用C语言获取详细信息,但我希望能够在较长的时间内输入/输出到此应用程序(我希望与之交互的应用程序在任务完成之前询问详细信息和是/否答案)。我想做一个前端应用程序,连接到聊天平台,如IRC,并能够控制远程应用程序从IRC或任何其他协议我使用。如果可能,我希望使用Perl或C编写任何示例。感谢您提供我可以使用的其他类似项目

我想知道是否有可能从我的C应用程序中启动Linux应用程序,并能够读取和输入数据到启动的程序中。我应该研究哪些功能才能做到这一点。我知道我可以使用
popen()
打开应用程序,并可以用C语言获取详细信息,但我希望能够在较长的时间内输入/输出到此应用程序(我希望与之交互的应用程序在任务完成之前询问详细信息和是/否答案)。我想做一个前端应用程序,连接到聊天平台,如IRC,并能够控制远程应用程序从IRC或任何其他协议我使用。如果可能,我希望使用Perl或C编写任何示例。感谢您提供我可以使用的其他类似项目的详细信息或链接。

我建议使用Perl解决方案,如
perldoc perlipc
中所述。大纲是这样的

use IPC::Open2;

my($chld_out, $chld_in);
my $pid = open2($chld_out, $chld_in, 'some cmd and args');
之后你可以

print $child_in "Input to child process\n";
my $response = <$chld_out>;
在“子进程输入”中打印$child\u;
我的$response=;

A进程A可以启动第二个进程B,并向B提供连接到A的stdin/out/err流。我认为进程A不可能以某种方式连接到A未启动的现有进程B的stdin/out/err流(请考虑安全问题)除非A和B使用IPC机制来协调这些共享流(可能不是文件描述符0、1和2)的创建。从用户的图标来看,询问此问题的用户似乎对答案失去了兴趣。这取决于应用程序的交互模型,但使用伪TTY(想想Perl和Expect模块)也可能实现。