打开文件时,发生共享冲突怎么解决

C++语言 码拜 9年前 (2016-04-26) 6400次浏览
在程序中,本人是用p = _fsopen(pchFile,pchMode,SH_DENYNO)这个方式打开文件的,然后程序写日志时,本人没关掉日志文件,只等到程序退出运行才关闭,现在本人手工打开日志文件,不让本人打开。有什么办法可以在程序运行时,可以不关闭日志,然后又可以手工打开日志的。
解决方案

2

引用:
Quote: 引用:

4楼正解!打开文件时,发生共享冲突怎么解决

赵老师不要带坏孩子,频繁打开关闭文件和程序生命周期保持文件打开相比,这效率能一样吗

奉丞相之命在此等候你多时了!
无profiler不要谈效率!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!打开文件时,发生共享冲突怎么解决

15

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

你的代码用_SH_DENYRW方式打开不就可以了?

呃,说错了,是_SH_DENYWR

不行,虽然给提示,但是打不开的

虽然没给提示,但是打不开的

不太可能吧,你试试本人这测试代码,运行的好好的啊

#include <iostream>
int main()
{
	FILE* p=_fsopen("d:\log.txt","a+",_SH_DENYWR);
	int n=0;
	char c;
	while (true)
	{
		fprintf(p,"%d\tlogloglog!\n",n++);
		fflush(p);
		std::cout<<"continue?"<<std::endl;
		std::cin>>c;
		if (c=="n")
			break;
	}
	fclose(p);
    return 0;
}

3

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

你的代码用_SH_DENYRW方式打开不就可以了?

呃,说错了,是_SH_DENYWR

不行,虽然给提示,但是打不开的

虽然没给提示,但是打不开的

直接用win32的OpenFile函数看看,另外,你手工是用什么软件去打开的?可能那个软件是以独占方式去打开文件的


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明打开文件时,发生共享冲突怎么解决
喜欢 (0)
[1034331897@qq.com]
分享 (0)