免费注册 查看新帖 |

Chinaunix

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

[故障求助] aix下fwrite的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-08 10:57 |只看该作者 |倒序浏览
在AIX5.3下,编了一个测试程序,代码如下,就是往一个文件里面写东西,但在运行它时,用svmon -P PID -i 5去看内存使用情况,如现程序在不断增加内存,就好像打印到文件的东西被放在内存了一样,难道用了fflush(),数据照样还会在内存有一份吗?而且发现跑很长时间,该内存一直增加,感觉就像内存有泄露一样。另,我把fopen和fclose放到循环里面,情况也一样。想问一下大家,是否有同样的情况?

    Pid Command          Inuse      Pin     Pgsp  Virtual 64-bit Mthrd LPage
   23654 test2             9421     4460      146     9943      N     N     N
   23654 test2             9422     4460      146     9943      N     N     N
   23654 test2             9423     4460      146     9943      N     N     N

#include <stdio.h>
#include <sys/select.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

#define TEXT "ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt.\n"

int main()
{
        FILE* fp = fopen("test.log", "a+");
        if (!fp)
        {
                printf("fopen error!\n");
                return 0;
        }

        for(int i = 0; i < 100000; i++)
        {      
                clearerr(fp);
                fwrite(TEXT, 1, strlen(TEXT), fp);
                if (ferror(fp))
                {
                        printf("error.\n");
                        return 0;
                }
                fflush(fp);
                struct timeval tv = {0, 100000};
                select(0, NULL, NULL, NULL, &tv);
        }

        fclose(fp);
        return 0;
}

论坛徽章:
0
2 [报告]
发表于 2008-05-13 09:59 |只看该作者
请问这个是正常情况吗?

论坛徽章:
0
3 [报告]
发表于 2008-05-13 14:28 |只看该作者

回复 #1 qinzh130 的帖子

缺省情况下文件数据都会被缓存。
fflush不会释放缓存,只是告诉内核把缓存的数据立即_同步_到磁盘上去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP