日期:2014-05-16  浏览次数:20579 次

进程间通信的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();
------解决方案--------------------
探讨

那是因为你的pipe调用放在fork()之后了
拿到前面去

int file[2];
pipe(file);
id=fork();