免费注册 查看新帖 |

Chinaunix

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

aix下fwrite的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-08 10:57 |只看该作者 |倒序浏览
在AIX5.3下,编了一个测试程序,代码如下,就是往一个文件里面写东西,但在运行它时,用svmon -P PID -i 5去看内存使用情况,如现程序在不断增加内存,就好像打印到文件的东西被放在内存了一样,难道用了fflush(),数据照样还会在内存有一份吗?而且发现跑很长时间,该内存一直增加,感觉就像内存有泄露一样。另,我把fopen和fclose放到循环里面,情况也一样。想问一下大家,是否有同样的情况?\r\n\r\n    Pid Command          Inuse      Pin     Pgsp  Virtual 64-bit Mthrd LPage\r\n   23654 test2             9421     4460      146     9943      N     N     N\r\n   23654 test2             9422     4460      146     9943      N     N     N\r\n   23654 test2             9423     4460      146     9943      N     N     N\r\n\r\n#include <stdio.h>\r\n#include <sys/select.h>\r\n#include <unistd.h>\r\n#include <errno.h>\r\n#include <string.h>\r\n\r\n#define TEXT \"ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt.\\n\"\r\n\r\nint main()\r\n{\r\n        FILE* fp = fopen(\"test.log\", \"a+\");\r\n        if (!fp)\r\n        {\r\n                printf(\"fopen error!\\n\");\r\n                return 0;\r\n        }\r\n\r\n        for(int i = 0; i < 100000; i++)\r\n        {       \r\n                clearerr(fp);\r\n                fwrite(TEXT, 1, strlen(TEXT), fp);\r\n                if (ferror(fp))\r\n                {\r\n                        printf(\"error.\\n\");\r\n                        return 0;\r\n                }\r\n                fflush(fp);\r\n                struct timeval tv = {0, 100000};\r\n                select(0, NULL, NULL, NULL, &tv);\r\n        }\r\n\r\n        fclose(fp);\r\n        return 0;\r\n}

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

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

回复 #1 qinzh130 的帖子

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP