C/C++里如何判断一个文件已经被占用?
就是我打开一个文件前要知道该文件是否正在被别的程序占用
能知道别的程序占用状态更好,比如别的进程以读或者写的方式打开
不知道C库函数怎么判断这个?
你应该直接打开,再进行失败后的异常处理,而不是事先判断。因为即使你有一个完美的算法进行判断,你也不能保证一个被判断没有被占用的文件,在你去打开的时候它还是没有被占用。也就是,你判断后,别人打开,你再打开,你一样失败,你这种判断毫无意义。
以"rw"模式fopen文件,如果不能open,则说明被占用。否则没有被独占。
学一下
楼上说的对,先尝试直接打开,打得开就没被占用,打不开处理异常情况
http://frente.yo2.cn/articles/%E6%9E%9A%E4%B8%BE%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%89%93%E5%BC%80%E7%9A%84%E5%8F%A5%E6%9F%84.html 这是一个更复杂的方法。
我这样,file2 仍然有值
C/C++ code:
char old[] = "sdfsd.txt", new_name[] = "sdfsd1.txt";
FILE *file;
file = fopen(old,"w");
int nn = GetLastError();
ATLASSERT(file);
FILE *file2 = fopen(old,"r+");
nn = ferror(file2);
ATLASSERT(file2);
估计Cruntime库没有实现排他模式,因此你打开总是合法的。
不过如果fopen都不失败,你更不可能检测出谁已经打开他了
如果是windows下,请看msdn的资料。
HFILE OpenFile(
LPCSTR lpFileName,
LPOF
相关问答:
以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......
想知道每条指令或函数的系统消耗。比如系统执行int a=0;的开销是多少。有没有类似的文档之类的。不要和我说用什么clock()函数来测试。我想要相关总结好的文档
先反汇编,然后拿着cpu的指令手册查每条指令的时间周期 ......
用这本书入门怎么样呢 跟谭浩强的相比如何? 谢谢
我把这本看了几篇,确实很好的书。就不要拿它跟 谭 的书比了, 谭 的书要照顾全国读者。
不可同日而语
一个是国外的,一个是国内的
学完c primer ......