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\n",getppid(),getpid(),p1);
     for(i=0;i<5;i++)
       printf("daughter%d\n",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\n",i);
        lockf(1,0,0); //解鎖
        }
      else
      {lockf(1,1,0);//加鎖
        for(i=0;i<5;i++)
         printf("parent%d\n",i);
        lockf(1,0,0); //解鎖
        
      }
    }
     
}
/*本實驗所涉及的的系統調用lockf(files,function,size),
用作鎖定文件的某些段或者整個文件。本函數的頭文件為include<unistd.h>
其中file為文件描述符,function是鎖定和解鎖:1表示鎖定,0表示解鎖;
size是鎖定或者解鎖的字節數,為0,表示從文件的當前位置到文件尾。*/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM