步骤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 }
浙公网安备 33010602011771号