我必须知道如何通过在它们之间连接第三个Java / C程序来同时连接两个简单运行的C程序的输入和输出。
我曾尝试通过管道,套接字和客户端连接,但它对于只使用scanf()和printf()的简单运行C程序没有帮助
示例程序: Program1.c
#include<stdio.h>
int main(int argc,char *argv[])
{
int a;
while(1)
{
scanf("%d",&a);
printf("%d",a);
}
return 0;
}
Program2.c
#include<stdio.h>
int main(int argc,char *argv[])
{
int a;
while(1)
{
scanf("%d",&a);
printf("%d",a);
}
return 0;
}
我的目标是在第三个Java或C程序的帮助下,将program1.c的stdin和stdout与program2.c的stdin和stdout连接
答案 0 :(得分:2)
基本上,你会想做这样的事情:
pipe
fork
,并在孩子中更改pipe
的FD stdout
,然后exec
的Program2; pipe
的{{1}}和stdin
的Program1 答案 1 :(得分:1)
您应该使用fork
和exec
编写第三个C程序,打开两个管道(使用pipe
)。这为您提供了4个文件描述符(2个输入,2个输出)
然后它分叉 - 孩子将在以后运行program1和父程序2(反之亦然 - 无关紧要)
每个子节点将关闭2个文件描述符,并保留一个输入和一个输出(但不是同一个管道)。他们还应关闭标准输入和输出
然后使用dup2
函数使管道fds变为0和1
现在你有两个进程,一个stdin通过管道连接到另一个stdout,反之亦然
最后一个阶段是使用exec
来制作program1
和program2
。