[Linux]C语言给文件加锁

作者: 忆往 分类: Linuxの生涯,学习の生涯 发布时间: 2018-07-10 09:16

函数原型:int flock(int fd,int operation)

函数参数

LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定。

LOCK_EX 建立互斥锁定。一个文件同时只有一个互斥锁定。

LOCK_UN 解除文件锁定状态。

注意:OCK_NB 无法建立锁定时,此操作可不被阻断,马上返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。

注意:flock是建议锁,不是强制锁,意思是当二个进程同时对文件进行写入操作时,一个进程加了锁,另一个进程也可以同时写入,所以使用此种类型的锁时应当进行锁定检查

/*************************************************************************
    > File Name: day30_08_flock.c
    > Author:Guanwei(Kevin.G) 
    > Mail:413014792@qq.com 
    > Function: 
    > Created Time: 2018年07月09日 星期一 23时06分58秒
 ************************************************************************/

#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/file.h>

int main(int argc,char* argv[])
{

    if(argc<2)
    {
        fprintf(stderr,"There is no arg\n");
        exit(-1);
    }

    int fd=open(argv[1],O_RDWR);
    if(fd==-1)
    {
        perror("open");
        exit(-1);
    }

    int iret=flock(fd,LOCK_SH|LOCK_NB);
    if(iret==-1)
    {
        perror("flock");
        exit(-1);
    }

    printf("The lock is Setted\n");

    getchar();

    close(fd);



    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注