您的位置:首页 > 其它

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

2016-04-14 22:43 218 查看
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



本文出自 “liveyoung” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: