代碼示例_IPC_無名管道

無名管道ui


 

 

 1 #include <unistd.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 
 6 int main(void)
 7 {
 8     char buf[1024];
 9     int pipefd[2];
10 
11     if( pipe( pipefd ) ){  // 建立無名管道
12         perror("pipe failed");
13         exit(1);
14     }
15 
16     pid_t pid = fork();           // fork 親緣進程通信
17     if(pid<0){
18         perror("fork failed");
19         exit;
20     }
21 
22 
23     else if(pid>0){                // 父進程發送數據
24         close(pipefd[0]); // 關閉讀 
25 
26         while(1){
27             bzero(buf,1024);
28             fgets(buf,1024,stdin);
29             
30             write(pipefd[1],buf,strlen(buf));
31 
32             if(strncmp(buf,"quit",4)==0)
33                 break;
34         }
35         exit(0);
36     }
37 
38     else if(pid==0){                // 子進程接收數據
39         close(pipefd[1]); // 關閉寫
40 
41         while(1){
42             bzero(buf,1024);
43             read(pipefd[0],buf,1024);
44             printf("chiid read: %s",buf);
45 
46             if(strncmp(buf,"quit",4)==0)
47                 break;
48         }
49         exit(0);
50     }
51 
52     return 0 ;
53 }

 

 


 

 

 

success !spa

相關文章
相關標籤/搜索