免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1301 | 回复: 0
打印 上一主题 下一主题

关于处理积压文件的问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-29 21:41 |只看该作者 |倒序浏览
大家好!麻烦各位大虾帮我看下,我写了个既做客户端又做服务端的程序,当作为客户端时一旦与服务端断开,就将从另一个客户端接受来的短信直接写入文件,到10条短信后将其转移到另一个目录,另一个线程负责处理那个目录下得所有积压文件.但是我在每产生一条短信调用SaveSmsFile时,调用10次,却只有一条短信入文件!实在不知道什么原因,麻烦各位了.我用的是AIX系统



void SaveSmsFile(char *nBuf_, char * length)
{

        time_t timer;
        struct tm *tmS;
        char str[30];
        int MaxValue, MinValue, tempnum;
        char len[5];

        pthread_mutex_lock(&g_mCRITICAL_SECTION);

        memset(len,0,sizeof(len));
        memset(str, 0, sizeof(str));
       memcpy(len,length,sizeof(len));

        char len[5];

        pthread_mutex_lock(&g_mCRITICAL_SECTION);

        memset(len,0,sizeof(len));
        memset(str, 0, sizeof(str));
       memcpy(len,length,sizeof(len));


        if (g_smsnum > 10)
        {

                if (smsfile != NULL)
                {
                        fclose(smsfile);
                        smsfile = NULL;
                        rename(g_filename, g_filename2);
                        remove(g_filename);

                        printf("file%s:%s\n", g_filename, g_filename2);

                }
                g_smsnum = 0;
                printf("333333333333\n");
        }
        if (smsfile == NULL)
        {
                MinValue = 10;
                MaxValue = 8000;
                timer = time(NULL);
                tmS = localtime(&timer);
                strftime(str, 20, "%Y%m%d%H%M%S", tmS);
                FileIndex++;
                srand((unsigned)time(NULL));
                tempnum = rand() % (MaxValue - MinValue) + MinValue + FileIndex;
                sprintf(g_filename2, "%s/data/SMSDAT/pushdat/%s%dsms.dat", getenv("HOME"), str, tempnum);

                printf("777777777777777777777777\n");

                if (access(g_filename, F_OK) == 0)      //文件是否存在
                {
                        printf("44444444444444444444\n");
                        rename(g_filename, g_filename2);
                        remove(g_filename);
                }
                smsfile = fopen(g_filename, "wb");
        }
        if (smsfile != NULL)
        {

                fwrite((char *)nBuf_, 1, atoi(len), smsfile);
                g_smsnum++;
                fflush(smsfile);
        }
        pthread_mutex_unlock(&g_mCRITICAL_SECTION);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP