📄 pipe_lock.c
字号:
#include <limits.h>#include <signal.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include <sys/file.h>int p1,p2;main(){ int fd[2],r,k=0,n; char outp[100],inp[4096],outpx[100],c; pipe(fd); printf("x=%ld,%d\n",F_LOCK,F_ULOCK); sleep(5); while((p1=fork())==-1); if (p1==0) { close(fd[0]); lockf(fd[1],F_LOCK,0); k=1; while(k<=3) {sprintf(outpx,"c1:%d",k); write(fd[1],outpx,strlen(outpx)); sleep(1); k++; } write(fd[1],":end",4); lockf(fd[1],F_ULOCK,0); exit(0); } else { while((p2=fork())==-1); if(p2==0) { k=1; close(fd[0]); lockf(fd[1],F_LOCK,0); while(k<=2) { sprintf(outpx,"c2:%d",k); write(fd[1],outpx,strlen(outpx)); k++; } lockf(fd[1],F_ULOCK,0); exit(0); } else {wait(0); wait(0); n=read(fd[0],inp,4096); printf("rectoatl=%d,recstring=%s",n,inp); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -