读书人

多线程写资料,写不进去

发布时间: 2013-08-25 10:49:56 作者: rapoo

多线程写文件,写不进去
下面的代码,我在主进程中,可以写入log,

但是我放到多线成中,只有第一次启动程序的时候,log才会被写入,然后就不能写入了,只有重启,也是只有1次可以写入。

难道多线程对这个有控制吗?还是我遗漏了什么?

我 试验过加互斥量问题依旧有



static int LogPrint(char *pcStrData)
{
char acDate[16];
char acLogName[30];
char acLogPath[100];
char acLogPathName[120];
FILE *pFd;
GetUTC(acDate);
/* log文件名字 */
//strncpy(cLogName, cDate, 10);/* 取年月日小时为文件名 */
//strncpy(acLogName, acDate, 14);/* 取年月日小时分秒为文件名 */
strncpy(acLogName, acDate, 8);/* 取年月日小时为文件名 */
acLogName[8] = '\0';
strcat(acLogName, ".log");

/* 获取路径 */
getcwd(acLogPath, sizeof(acLogPath));
/* 获得完整路径 */
sprintf(acLogPathName, "%s/log/", acLogPath);
/* 创建文件夹 */
mkdir(acLogPathName, 0777);

strcat(acLogPathName, acLogName);
pFd = fopen(acLogPathName, "a+");
if (pFd == NULL)
{
DBG_PRINT("can not create log file:%s \n", acLogPathName);
return -1;
}
GetUTC(acDate);
fwrite(acDate, 14, 1, pFd);/* 年月日时分秒 */
fwrite(" ", 1, 1, pFd);
fwrite(pcStrData, strlen(pcStrData), 1, pFd);
fclose(pFd);
//fwrite("\n", 1, 1, pFd);
return strlen(pcStrData) + 14 + 1;
}


[解决办法]
读写文件和线程没什么关系,报什么错?是不是没有同步程序就退出了?fsync()试试

读书人网 >UNIXLINUX

热点推荐