良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

linux中fcntl()、lockf、flock的区别

这三个函数的作用都是给文件加锁,那它们有什么区别呢?首先flock和fcntl是系统调用,而lockf是库函数。lockf实际上是fcntl的封装,所以lockf和fcntl的底层实现是一样的,对文件加锁的效果也是一样的。后面分析不同点时大多数情况是将fcntl和lockf放在一起的。下面首先看每个函数的使用,从使用的方式和效果来看各个函数的区别。 1. flockl 函数原型#include <sys/file.h>int floc

阅读全文...

linux下使用flock锁文件(适用于crontab)

当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有也在操作,以免损坏数据。

但是flock有不适合的地方,比如和网络有关的计划任务跑了一半,网络中断了,任务是不会退出的,等网络好了,计划任务不会继续执行下去。这种不灵活的东西,最好还是shell里自己写好执行状态去操作,管理更加方便自如。


阅读全文...