linux下怎么样判断文件被占用

C语言 码拜 9年前 (2016-06-05) 3022次浏览
现在有一个需求:
将指定目录下的文件拷贝到另一个位置。
问题:
在拷贝之前必须检查目录下的文件已经被关闭,但是不知道怎么检查。
思路:
1.lsof/fuser–测试了下,好像只能检查目录被占用,不能检查文件.

root@bluedon:/home/sjw/0120# cat /proc/version 
Linux version 3.10.0 (root@bluedon) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Mon Nov 16 16:49:37 CST 2015
root@bluedon:/home/sjw/0120# lsof -h
lsof 4.86
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man

2.使用fopen以独占方式打开该文件–假如目录下文件很多,这样的方式比较效率低
3.stat文件状态,但是没有查到对应的标志–标识文件能否被占用
求各位高手指点,在线急等!

解决方案

10

独占打开失败即被占用。本人觉得。

5

返回打开文件的状态。

5

拷贝之前用flock()锁住,拷贝玩用flock()解锁。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明linux下怎么样判断文件被占用
喜欢 (0)
[1034331897@qq.com]
分享 (0)