现在有一个需求:
将指定目录下的文件拷贝到另一个位置。
问题:
在拷贝之前必须检查目录下的文件已经被关闭,但是不知道怎么检查。
思路:
1.lsof/fuser–测试了下,好像只能检查目录被占用,不能检查文件.
将指定目录下的文件拷贝到另一个位置。
问题:
在拷贝之前必须检查目录下的文件已经被关闭,但是不知道怎么检查。
思路:
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()解锁。