进程间通信的pipe ,很简单
#include<stdio.h>
#include<sys/types.h>
int main()
{
int id=0;
int pid=0;
char buffer[512];
char mbuffer[512];
id=fork();
int file[2];
pipe(file);
if(id==-1)
{
printf("Erro");
}
else if(id==0)
{
close(file[0]);
write(file[1],"i am clird 1\n",strlen("i am clird 1\n"));
}
else if(id>0)
{
pid=fork();
if(pid==-1)
{
printf("Erro");
}
else if(pid==0)
{
close(file[0]);
write(file[1],"i am child 2\n",strlen("i am child 2\n"));
}
else if(pid>0)
{
close(file[1]);
read(file[0],buffer,strlen("i am clird 1\n"));
printf(buffer);
read(file[0],mbuffer,strlen("i am clird 1\n"));
printf(mbuffer);
}
}
}
就是父进程创建2个子进程,子进程写一句给父进程,但是,读不出两句话
------解决方案--------------------一次read就读干净了, 所以只打印一次, 而且没加终结符.
------解决方案--------------------那是因为你的pipe调用放在fork()之后了
拿到前面去
int file[2];
pipe(file);
id=fork();
------解决方案--------------------