现在的位置: 首页 > 综合 > 正文

管道通信——Pipeline communication

2017年12月15日 ⁄ 综合 ⁄ 共 760字 ⁄ 字号 评论关闭

//using pipe the communication between f proccess and c proc
//
//
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>

#define BUFSIZE 1024

int main()
{
 int ret,retw;
 pid_t pid;
 char buf[BUFSIZE] = {'\0'};
 int pd[2];

// pipe()  creates  a  pair  of  file descriptors, pointing to a pipe inode, and places them in the
// array pointed to by filedes.  filedes[0] is for reading, filedes[1] is for writing.

 if(pipe(pd) < 0)
 {
  perror("pipe()");
  exit(1);
 }

 pid = fork();
 if(pid < 0)
 {
  perror("fork()");
  exit(1);
 }

 if(pid == 0)  //child read
 {
  close(pd[1]); //prevent the error
  ret = read(pd[0],buf,BUFSIZE);
  puts(buf);
  close(pd[0]);
  exit(0);
 }
 else   // parent write
 {
  close(pd[0]);
  retw = write(pd[1],"Hello",5);
  close(pd[1]);
  wait(NULL);
  exit(0);
 }

 exit(0);
}

 

 

抱歉!评论已关闭.