函数还是使用fcntl
涉及的宏为F_GETLK;
步骤:
1、打开文件
2、设置结构体 sstruct flock;
3、调用函数fcntl
注意结构体的初始化方式:
使用 ”=“时,在变量前有”.“
使用GUN方式时,使用”:“
变量定义完成后使用逗号隔开。
typedef struct flock fk;
int main(void)
{
int fd = open("a.txt",O_RDWR);
if(-1 == fd)
perror("error1"),exit(-1);
fk lock = {
.l_type = F_WRLCK,
.l_whence = SEEK_SET,
.l_start = 10,
.l_len = 100,
.l_pid = -1
};
/* GUN struct init
fk lock = {
l_type : F_WRLCK,
l_whence : SEEK_SET,
l_start : 10,
l_len : 100,
l_pid : -1
}
*/
fcntl(fd,F_GETLK,&lock);
printf("lock.l_pid = %d\n",lock.l_pid);
close(fd);
return 0;
}
l_pid的值已经改变,存放的是在a.txt中加锁的进程ID