步骤1:同上

步骤2:建立目录

  cd workdir/linux/application

  mkdir -p 10-comm/pipe

步骤3:复制

  cp /mnt/hgfs/share/2.Linux系统部分/12.Linux系统无名管道通信实验/实验代码/pipe.c  ./  -a

步骤4:同上

  cd 10-comm/pipe

  gcc pipe.c -o pipe

  ./pipe

  结果延迟5秒显示(个人感觉为10s)

 

附:程序源码

  pipe.c

 1 #include <unistd.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 int pid1, pid2;
 6 
 7 main( )
 8 { 
 9     int fd[2];
10     char outpipe[100], inpipe[100];
11     pipe(fd);                       /*创建一个管道*/
12     while ((pid1 = fork( )) == -1);
13     if (pid1 == 0)
14     {
15         lockf(fd[1], 1, 0);
16         sprintf(outpipe, "child 1 process is sending message!"); 
17         /*把串放入数组outpipe中*/
18         write(fd[1], outpipe, 50);     /*向管道写长为50字节的串*/
19         sleep(5);                 /*自我阻塞5秒*/
20         lockf(fd[1], 0, 0);
21         exit(0);
22     }
23     else
24     {
25         while((pid2 = fork( )) == -1);
26         if (pid2 == 0)
27         {   lockf(fd[1],1,0);           /*互斥*/
28             sprintf(outpipe, "child 2 process is sending message!");
29             write(fd[1], outpipe, 50);
30             sleep(5);
31             lockf(fd[1], 0, 0);
32             exit(0);
33         }
34         else
35         {  wait(NULL);              /*同步*/
36             read(fd[0], inpipe, 50);   /*从管道中读长为50字节的串*/
37             printf("%s/n", inpipe);
38             wait(NULL);
39             read(fd[0], inpipe, 50);
40             printf("%s/n",inpipe);
41             exit(0);
42         }
43     }
44 }

 

posted on 2018-08-02 17:22  kingofloong  阅读(466)  评论(0)    收藏  举报