linuxc编程——文件锁

浅浅的花香味﹌ 2022-11-27 00:41 241阅读 0赞

文件锁

在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。

  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <stdlib.h>
  7. #define _FILE_NAME_ "/home/youName/Downloads/temp.lock"
  8. int main(int argc, char const *argv[])
  9. {
  10. int fd = open(_FILE_NAME_,O_RDWR|O_CREAT,0666);
  11. if(fd<0){
  12. perror("open err");
  13. return -1;
  14. }
  15. struct flock lk;
  16. lk.l_type = F_WRLCK;
  17. lk.l_whence = SEEK_SET;
  18. lk.l_start = 0;
  19. lk.l_len = 0;
  20. if(fcntl(fd,F_SETLK,&lk)<0){
  21. perror("get lock err");
  22. }
  23. while (1)
  24. {
  25. printf("I am alive!\n");
  26. sleep(1);
  27. }
  28. return 0;
  29. }

启动终端1

  1. ./06_flock
  2. I am alive!
  3. I am alive!
  4. I am alive!
  5. I am alive!
  6. I am alive!
  7. I am alive!
  8. I am alive!

启动终端2

  1. get lock err: Resource temporarily unavailable

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LinuxC/C++网络爬虫(1)

      网络爬虫(Web Crawler),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,有时候又称网络蚂蚁,是搜索引擎(例如:Baidu、Google……)的重要组成

    相关 LinuxC----线程总结

    一.线程和进程的关系 为什么要引入线程? > CPU的执行速度过快,只有寄存器仅仅可以追上,RAM和别的设备更是难以追上,而进程和线程只不过是对应的CPU时间段的描述.

    相关 编译linuxc 内核

    编译内核全过程(kernel2.6.7) 花了几天才编译成功kernel2.6.7,其过程真可谓艰辛.古语有云:"苦尽甘来!"现在终于可以乐上一阵了.由于许多朋友对操作的顺