当前位置: 首页 > 面试题库 >

flock()函数有问题

徐淳
2023-03-14
问题内容

我有一个关于如何flock()工作的问题,尤其是在python中。我有一个打开串行连接(通过os.open())的模块。我需要使该线程安全。使用threading.Lock(),在同一个模块中工作时很容易使它线程安全,但是如果从不同的地方导入该模块,则会中断。

我当时在考虑使用flock(),但是在查找有关羊群工作原理的足够信息时遇到了麻烦。我读到flock()将在文件关闭后将文件解锁。但是如果python崩溃,有没有一种情况可以使文件保持打开状态?

如果LOCK_EX设置了锁定文件,究竟允许使用什么?只是锁定文件的模块?从最初运行的脚本导入的任何模块?


问题答案:

当进程终止时,操作系统
清理所有打开的文件资源(我确定会有一些警告)。这是因为在关闭文件时会释放建议锁,该操作是在python进程退出时作为OS清理的一部分进行的操作。

请记住,flock(2)仅仅是建议性的:

咨询锁允许 合作的 进程对文件执行一致的操作,但是[其他行为不佳的]进程仍可以在不使用咨询锁的情况下访问那些文件

flock(2)实现读写器锁。您不能使用来对同一文件植绒两次LOCK_EX,但任何数量的人都可以LOCK_SH同时对其进行植绒(只要没有其他人对其进行植绒LOCK_EX)。

锁定机制允许两种类型的锁:共享锁和排他锁。任何时候都可以将多个共享锁应用于一个文件,但是在任何时候都不允许同时在文件上使用多个互斥锁,或者共享和互斥锁。

flock在OS /进程级别工作,并且独立于python模块。一个模块可以请求 n个 锁,或者可以跨 m个 模块请求 n
锁。但是,在给定的时间,只有一个进程可以对给定的文件持有锁。 __LOCK_EX

在“非UNIX”系统或非本地文件系统上的YMMV。



 类似资料:
  • 描述 (Description) 此函数使用系统flock(),fcntl()锁定或lockf()支持指定FILEHANDLE上的文件锁定。 使用的确切实现取决于系统支持的内容。 OPERATION是此处定义的静态值之一。 Operation Result LOCK_SH Set shared lock. LOCK_EX Set exclusive lock. LOCK_UN Unlock

  • flock(锁定文件或解除锁定) 相关函数 open,fcntl 表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各 种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文 件的某一区域。 参数 operation有下列四种情况:

  • flock 锁定文件或解除锁定 相关函数 open,fcntl 表头文件 #include<sys/file.h> 定义函数 int flock(int fd, int operation); 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。 参数 operation有下列四种情况:

  • Flock 该软件基于火狐的内核,最大的特点是集成了所谓 Web2.0 的 WEB 服务,如博客、RSS、网络收藏夹、照片共享等。 据外电报道,美国加州的一个开放源码开发小组周日发布了一个名为Flock的网络浏览器。该软件基于火狐的内核,最大的特点是集成了所谓Web2.0的WEB服务,如博客、RSS、网络收藏夹、照片共享等。 这个名为“点击”的开发小组延续了开源界名人Bart Decrem的工作。

  • 本文向大家介绍PHP文件锁函数flock()详细介绍,包括了PHP文件锁函数flock()详细介绍的使用技巧和注意事项,需要的朋友参考一下 文件操作系统是在网络环境下完成的,可能有多个客户端用户在同一个时刻对服务器上的同一个文件访问。当这种并发访问产生时,很可能会破坏文件中。例如一个用户正在向文件中写入数据,当还没有写完时,其他用户在这一时刻也向这个文件中写数据,就会造成数据写入混乱。还有,当用户

  • Flock 是一个私人的联系人和日历的同步 Android 应用。