- 论坛徽章:
- 0
|
本帖最后由 xiaozhengshan 于 2014-07-25 16:39 编辑
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
int main()
{
int fd=open("./1.c",O_WRONLY|O_CREAT);
struct flock fk;
fk.l_type=F_WRLCK;
fk.l_whence=SEEK_SET;
fk.l_start=0;
fk.l_len=0;
fk.l_pid=getpid();
fcntl(fd,F_SETLK,&fk);
sleep(2);
fcntl(fd,F_GETLK,&fk);
printf("F_WRLCK==%d \t F_RDLCK==%d",F_WRLCK,F_RDLCK);
printf("\n");
printf("after set ,fk.l_type=%d \n",fk.l_type);
while(1)
;
return 0;
}
在两个终端各自开一个进程运行该程序,为何一个拿到的锁类型是",fk.l_type=F_UNLCK(先执行的进程),一个拿到的锁类型是fk.l_type=F_WRLCK(后执行的进程)
|
|