首页 > 其他分享 >文件锁

文件锁

时间:2022-12-25 19:57:06浏览次数:31  
标签:fcntl 文件 建议性 写入 描述符 上锁

文件锁包括建议性锁强制性锁

建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。

在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。采用强制性锁对性能的影响很大,每次读写操作都必须检查是否有锁存在。

在Linux中,实现文件上锁的函数有lockf()fcntl(),其中lockf()用于对文件施加建议性锁,而fcntl()不仅可以施加建议性锁,还可以施加强制锁。

同时,fcntl()还能对文件的某一记录上锁,也就是记录锁

记录锁又可分为读取锁和写入锁,其中读取锁又称为共享锁,它能够使多个进程都能在文件的同一部分建立读取锁。

而写入锁又称为排斥锁,在任何时刻只能有一个进程在文件的某个部分上建立写入锁。

当然,在文件的同一部分不能同时建立读取锁和写入锁。

fcntl()函数具有很丰富的功能,它可以对已打开的文件描述符进行各种操作,不仅包括管理文件锁,还包括获得设置文件描述符和文件描述符标志、文件描述符的复制等很多功能。

 

 

 

标签:fcntl,文件,建议性,写入,描述符,上锁
From: https://www.cnblogs.com/cnetsa/p/17004469.html

相关文章

  • 虚拟文件系统
    Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建。第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。VFS在......
  • Linux中文件及文件描述符
    对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文......
  • 基本文件操作
             ......
  • 实验6 文件应用编程
    1#define_CRT_SECURE_NO_WARNINGS2#include<stdio.h>3intmain()4{5intnum=0;6FILE*fp;7charch;8if((fp=fopen("data4.tx......
  • C++中头文件由来及使用细节
    在刚学习C++的时候,无法一下子习惯头文件’.h’这个东西,因为在C#中,通常函数/变量的声明和实现都是写在一起的,跨.cs文件调用其他类成员时,编译器并不会冒出’未找到该......
  • 构建根文件系统的其他部分
    /etc/inittab格式id:runlevels:action:processid:ID意义对BusyBoxinit和SystemVinit是不同的,此处ID指明程序的控制tty,如果程序不需要交互,则ID为空runlevels:BusyBox......
  • 构建根文件系统的步骤
    采用Busybox创建基本命令创建基本的目录/lib/etc/var/tmp/dev/sys/proc等添加glibc基本动态库创建基本的设备节点添加启动配置和脚本程序/etc/inittab/etc/fsta......
  • 使用不同的文件目录层次结构?
    使用不同的文件目录层次结构?FHS(文件系统层次化标准)规定了制定根文件系统的规则  通常大多少应用程序和发布依赖这些规则,但这些规则不是内核强制的在嵌入式Linux系统中......
  • Vue单文件组件以及脚手架
    .vue文件结构<template><!--写页面结构代码--></template><script><!--写组件交互代码--></script><style><!--写组件页面的样式代......
  • Vue非单文件组件
     非单文件组件 就是一个文件中有多个组件 Vue中使用组件的三大步骤:          一、定义组件(创建组件)          二、注......