美文网首页
linux c文件锁flock

linux c文件锁flock

作者: 一路向后 | 来源:发表于2021-08-20 22:13 被阅读0次

1.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/file.h>

int main()
{
    FILE *fp = NULL;
    int i = 20;

    if((fp=fopen("./file.lock", "rb")) == NULL)
    {
        printf("file open error!\n");
        return -1;
    }

    /*给该文件加锁*/
    if(flock(fp->_fileno, LOCK_EX) != 0)
    {
        printf("file lock by others!\n");
        fclose(fp);
        return -1;
    }

    /*加锁时间为20s*/
    while(i)
    {
        printf("sleep %d\n", i--);
        sleep(1);
    }

    flock(fp->_fileno, LOCK_UN);

    fclose(fp);

    return 0;
}

2.编译源码

$ gcc -o file-1 file.c
$ gcc -o file-2 file.c

3.运行及其结果

$ ./file-1
$ ./file-2
sleep 20
sleep 19
sleep 18
sleep 17
sleep 16
sleep 15
sleep 14
sleep 13
sleep 12
sleep 11
sleep 10
sleep 9
sleep 8
sleep 7
sleep 6
sleep 5
sleep 4
sleep 3
sleep 2
sleep 1
sleep 20
sleep 19
sleep 18
sleep 17
sleep 16
sleep 15
sleep 14
sleep 13
sleep 12
sleep 11
sleep 10
sleep 9
sleep 8
sleep 7
sleep 6
sleep 5
sleep 4
sleep 3
sleep 2
sleep 1

相关文章

  • linux c文件锁flock

    1.源码实现 2.编译源码 3.运行及其结果

  • Linux文件锁-flock

    背景:在使用crontab管理定时脚本时,如果设定的脚本执行时间间隔较短,例如5分钟执行一次,正常情况下,脚本执行...

  • Linux的文件锁flock

    今天看腾讯云服务器的脚本时,发现在root用户的crontab定时任务里面有个函数flock。在每五分钟执行脚...

  • 了解cephfs锁必须要知道的事情

    1、本文讨论的锁不是flock。flock是posix标准中对文件某部分偏移加的锁。而这里的锁指的是MDS集中管理...

  • linux使用flock文件锁解决脚本重复执行问题

    关于forck flock 是对于整个文件的建议性锁。也就是说,如果一个进程在一个文件(inode)上放了锁,那么...

  • 12.3.5 文件的锁定机制

    12.3.5 文件的锁定机制 flock -- 轻便的咨询文件锁定语法: bool flock ( int han...

  • 使用文件锁flock实现进程互斥

    最近写了一个python脚本,对Android设备进行自动化测试。当重复执行脚本时,如果不对访问设备进行锁控制,不...

  • Linux 文件锁

    系统调用fcntl 参数:fd:文件描述符cmd:F_GETLK, F_SETLK or F_SETLKWlock...

  • flock v.s. fcntl

    共同点 都支持阻塞和非阻塞模式 只能操作于文件,而不是目录 当进程结束或者终止的时候,锁都会被自动释放 flock...

  • 2018-11-11网络攻防第五周学习文档

    Linux 了解了linux的文件系统一些基本概念,如链接,互斥锁,共享锁等,还有有关文件系统的系统调用,crea...

网友评论

      本文标题:linux c文件锁flock

      本文链接:https://www.haomeiwen.com/subject/cgjxiltx.html