首页 > 其他 > 详细

Unix - 管道

时间:2014-03-23 10:38:03      阅读:434      评论:0      收藏:0      [点我收藏+]

 

 

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <sys/types.h>
 4 #include <sys/wait.h>
 5 #include <unistd.h>
 6 
 7 void client(int, int), server(int, int);
 8 
 9 int main(int argc, char **argv)
10 {
11     int        pipe1[2], pipe2[2];
12     pid_t    childpid;
13     pipe(pipe1);
14     pipe(pipe2);
15     if ( (childpid = fork()) == 0) {
16         close(pipe1[1]); 
17         close(pipe2[0]); 
18         server(pipe1[0], pipe2[1]); 
19         exit(0);
20     }
21         
22     close(pipe1[0]); 
23     close(pipe2[1]); 
24     client(pipe2[0], pipe1[1]); 
25     waitpid(childpid, NULL, 0);    
26     
27     exit(0);
28 }
mainpipe.c

 

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <unistd.h>
 4 
 5 #define MAXLINE 1024
 6 
 7 void client(int readfd, int writefd)
 8 {
 9     size_t    len;
10     ssize_t    n;
11     char    buff[MAXLINE];
12     
13     while(NULL != fgets(buff, MAXLINE, stdin))
14     {            
15         len = strlen(buff);    
16         if (buff[len-1] == \n)
17             len--;        
18             
19         write(writefd, buff, len); 
20         
21         if(0 != read(readfd, buff, MAXLINE))
22         {
23             fputs(buff, stdout);
24         }
25     }
26 }
client.c

 

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <unistd.h>
 4 
 5 #define MAXLINE 1024
 6 
 7 void server(int readfd, int writefd)
 8 {
 9     ssize_t    n;
10     char    buff[MAXLINE+1];
11     
12     while(1)
13     {
14         if ( (n = read(readfd, buff, MAXLINE)) == 0)
15         {
16             printf("end-of-file while reading pathname");
17             return;
18         }
19         buff[n] = \0;        
20             
21         write(writefd, buff, n); 
22 
23         sleep(1);
24     }
25 }
server.c

Unix - 管道,布布扣,bubuko.com

Unix - 管道

原文:http://www.cnblogs.com/paullam/p/3615233.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!