进程通信(管道 单向通信)

来源:互联网 发布:西南大学官网网络教育 编辑:程序博客网 时间:2024/06/06 16:39
 1 #include<stdio.h> 2#include<sys/wait.h> 3#include<unistd.h> 4#include<string.h> 5#include<stdlib.h> 6int main() 7 { 8    int pipefd[2]; 9    if(pipe(pipefd)==-1) 10    { 11     perror("pipe"); 12     return -1; 13    } 14   pid_t pid=fork(); 15   if(pid<0) 16    { 17      perror("pid"); 18      return -1; 19    } 20   else if(pid==0) 21    { 22       close(pipefd[0]); 23       char buf[20]="we are young"; 24        int i=0; 25       while(i<10) 26     { 27       write(pipefd[1],buf,strlen(buf)); 28       sleep(1); 29       i++; 30     } 31      exit(1); 32    } 33   else 34    { 35     close(pipefd[1]); 36     char buf[200]; 37     int j=0; 38     while(j<10) 39     { 40     memset(buf,'\0',sizeof(buf)); 41     ssize_t size= read(pipefd[0],buf,sizeof(buf)); 42       if(size>0) 43       printf("%s\n",buf); 44      j++; 45     } 46    if(waitpid(pid,NULL,0)==pid) 47    { 48       printf("wait success\n"); 49     } 50    } 51   return 0; 52 }   Makefile: 1 Pipe:pipe.c 2         gcc -o $@ $^ 3.PHONY:clean 4clean: 5         rm -f pipe

wKiom1cPrEKCM4usAALe2p7ArIo504.png

本文出自 “liveyoung” 博客,转载请与作者联系!

0 0
原创粉丝点击