lockf函数的使用

#include<stdio.h>
#include<unistd.h>
void main()
{int p1,p2,i;
 while((p1=fork())==-1);//创建子进程p1,这个是一个技巧,直到创建子进程成功为止
  if(p1==0)
   {
    lockf(1,1,0);//加锁第一个参数为stdout(标准输出设备描述符)
     //printf("child  %4d %4d
",getppid(),getpid(),p1);
     for(i=0;i<5;i++)
       printf("daughter%d
",i);
     lockf(1,0,0); }
  else{
    while((p2=fork())==-1);//创建子进程p2
     if(p2==0){
        lockf(1,1,0);//加锁第一个参数为stdout(标准输出设备描述符)
        for(i=0;i<5;i++)
         printf("son%d
",i);
        lockf(1,0,0); //解锁
        }
      else
      {lockf(1,1,0);//加锁
        for(i=0;i<5;i++)
         printf("parent%d
",i);
        lockf(1,0,0); //解锁
        
      }
    }
     
}
/*本实验所涉及的的系统调用lockf(files,function,size),
用作锁定文件的某些段或者整个文件。本函数的头文件为include<unistd.h>
其中file为文件描述符,function是锁定和解锁:1表示锁定,0表示解锁;
size是锁定或者解锁的字节数,为0,表示从文件的当前位置到文件尾。*/
原文地址:https://www.cnblogs.com/leijiangtao/p/4110808.html