战争之人2冲突世界mod冲突的世界文件怎么打开

<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">分
<div class="spf_off1" style="width:%">分
<div class="spf_off1" style="width:%">分
<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">10分
<div class="spf_off1" style="width:%">10分
<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">5.0分
<div class="spf_off1" style="width:%">5.0分
从2008年-2014年 快猴网一直在努力做到最好
备案编号:粤ICP备号-1打开文件时,发生共享冲突怎么解决
来源:csdn
【在程序中,我是用p = _fsopen(pchFile,pchMode,SH_DENYNO)这个方式打开文件的,然后程序写日志时,我没关掉日志文件,只等到程序退出运行才关闭,现在我手工打开日志文件,不让我打开。有什么办法可以在程序运行时,可以不关闭日志,然后又可以手工打开日志的。】
hmz6285603:
没有解决办法?
zhao4zhong1:
仅供参考:#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#ifdef _MSC_VER
#pragma warning(disable:4996)
#include &windows.h&
#include &io.h&
#include &unistd.h&
#include &sys/time.h&
#include &pthread.h&
CRITICAL_SECTION
pthread_mutex_t
_vsnprintf
#define MAXLOGSIZE
#define MAXLINSIZE 16000
#include &time.h&
#include &sys/timeb.h&
#include &stdarg.h&
char logfilename1[]="MyLog1.log";
char logfilename2[]="MyLog2.log";
static char logstr[MAXLINSIZE+1];
char datestr[16];
char timestr[16];
char mss[4];
CRITICAL_SECTION cs_
#ifdef _MSC_VER
void Lock(CRITICAL_SECTION *l) {
EnterCriticalSection(l);
void Unlock(CRITICAL_SECTION *l) {
LeaveCriticalSection(l);
void Lock(CRITICAL_SECTION *l) {
pthread_mutex_lock(l);
void Unlock(CRITICAL_SECTION *l) {
pthread_mutex_unlock(l);
void LogV(const char *pszFmt,va_list argp) {
struct tm *
if (NULL==pszFmt||0==pszFmt[0])
_vsnprintf(logstr,MAXLINSIZE,pszFmt,argp);
ftime(&tb);
now=localtime(&tb.time);
sprintf(datestr,"%04d-%02d-%02d",now-&tm_year+1900,now-&tm_mon+1,now-&tm_mday);
sprintf(timestr,"%02d:%02d:%02d",now-&tm_hour
,now-&tm_min
,now-&tm_sec );
sprintf(mss,"%03d",tb.millitm);
printf("%s %s.%s %s",datestr,timestr,mss,logstr);
flog=fopen(logfilename1,"a");
if (NULL!=flog) {
fprintf(flog,"%s %s.%s %s",datestr,timestr,mss,logstr);
if (ftell(flog)&MAXLOGSIZE) {
fclose(flog);
if (rename(logfilename1,logfilename2)) {
remove(logfilename2);
rename(logfilename1,logfilename2);
fclose(flog);
void Log(const char *pszFmt,...) {
Lock(&cs_log);
va_start(argp,pszFmt);
LogV(pszFmt,argp);
va_end(argp);
Unlock(&cs_log);
int main(int argc,char * argv[]) {
#ifdef _MSC_VER
InitializeCriticalSection(&cs_log);
pthread_mutex_init(&cs_log,NULL);
for (i=0;i&10000;i++) {
Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);
#ifdef _MSC_VER
DeleteCriticalSection(&cs_log);
pthread_mutex_destroy(&cs_log);
//1-79行添加到你带main的.c或.cpp的那个文件的最前面
//81-86行添加到你的main函数开头
//90-94行添加到你的main函数结束前
//在要写LOG的地方仿照第88行的写法写LOG到文件MyLog1.log中
hmz6285603:
赵老师没理解我说的,我说手工打开,是我使用鼠标双击打开日志文件。
zhao4zhong1:
你没理解我的回复:告诉你每写一条日志,都要进行fopen,fprintf,fclose
你的代码用_SH_DENYRW方式打开不就可以了?
呃,说错了,是_SH_DENYWR
yuelengdihai:
看看Open函数的nOpenFlags
读写的Open函数都加上CFile::shareDenyNone
zhao4zhong1:
赵老师不要带坏孩子,频繁打开关闭文件和程序生命周期保持文件打开相比,这效率能一样吗
hmz6285603:
我也是这么觉得的,因为我会频繁写日志,频繁打开觉得不合适
hmz6285603:
不行,虽然给提示,但是打不开的
hmz6285603:
虽然没给提示,但是打不开的
zhao4zhong1:
奉丞相之命在此等候你多时了!
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
hmz6285603:
赵老师,那你试过?
不太可能吧,你试试我这测试代码,运行的好好的啊
#include &iostream&
int main()
FILE* p=_fsopen("d:\\log.txt","a+",_SH_DENYWR);
while (true)
fprintf(p,"%d\tlogloglog!\n",n++);
fflush(p);
std::cout&&"continue?"&&std::
std::cin&&c;
if (c=='n')
fclose(p);
luciferisnots...:
直接用win32的OpenFile函数看看,另外,你手工是用什么软件去打开的?可能那个软件是以独占方式去打开文件的
hmz6285603:
你说的对,我昨天没注意到,我修改的地方没有调用到。谢谢哈
zhao4zhong1:
我虽然没试过,但我这段写日志代码创下的实际记录是1毫秒约800行记录。
wangyaninglm:
可以使用一些原子操作,mutex锁啊
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动

我要回帖

更多关于 战争之人2冲突世界mod 的文章

 

随机推荐