免费注册 查看新帖 |

Chinaunix

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

考大家一个问题,fclose要不要判断返回值???? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-26 15:42 |只看该作者 |正序浏览
考大家一个问题,fclose要不要判断返回值????

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
42 [报告]
发表于 2008-01-25 13:55 |只看该作者
原帖由 hqx8211 于 2008-1-25 13:44 发表
突然发现这个哥们在2008-1-24 15:18  回复 2004-2-27 11:24 的帖子.....超级汗,从第多少页翻出来的.....

哥们 灌水呀
版规里不是有提问先搜索的说明吗

论坛徽章:
0
41 [报告]
发表于 2008-01-25 13:44 |只看该作者

回复 #28 yecheng_110 的帖子

突然发现这个哥们在2008-1-24 15:18  回复 2004-2-27 11:24 的帖子.....超级汗,从第多少页翻出来的.....

论坛徽章:
0
40 [报告]
发表于 2008-01-25 10:30 |只看该作者
原帖由 FH 于 2004-2-26 17:08 发表
malloc是在堆里分配空间的,你的堆有多大?malloc分配的不是物理内存,更不是交换区,基本概念先要搞懂!

至于什么深层返回的问题,我建议各层有各层的逻辑,你出现错误时只关闭本层的文件,并给上层一个标志 ...



顶这个

论坛徽章:
0
39 [报告]
发表于 2008-01-24 19:45 |只看该作者
看了这次讨论和昨天yxping关于缓冲区的讨论
我觉得以后还是不用fwrite了......

论坛徽章:
0
38 [报告]
发表于 2008-01-24 17:11 |只看该作者
原帖由 flw 于 2/27/2004 11:24 发表
检查 malloc 是必要的。

检查 fclose 纯属吹毛求疵。
如果怕写不成功的话,
fflush 好了。

我非常赞成“效率”这个说法。
假如说,fclose 你检查到失败了怎么办?
是不是得提示一句话?
或者写日志文 ...


偶像派说出来的话就是不一样,俺也是只检查malloc,从来就没有管过fclose。永远支持flw……

论坛徽章:
0
37 [报告]
发表于 2008-01-24 16:40 |只看该作者
malloc俺检查,fclose从不检查。
发贴完毕。

论坛徽章:
0
36 [报告]
发表于 2008-01-24 16:14 |只看该作者
看close()的说明

Not checking the return value of close is a common but nevertheless serious programming error.   It  is  quite
       possible that errors on a previous write(2) operation are first reported at the final close.  Not checking the
       return value when closing the file may lead to silent loss of data.  This can especially be observed with  NFS
       and with disk quota.

       A  successful close does not guarantee that the data has been successfully saved to disk, as the kernel defers
       writes. It is not common for a filesystem to flush the buffers when the stream is closed. If you  need  to  be
       sure that the data is physically stored use fsync(2).

论坛徽章:
0
35 [报告]
发表于 2008-01-24 16:08 |只看该作者
看了那个fclose->write失败的帖子,就觉得严格的话应该关闭了,否则,我们就做了一个这样的假设: 磁盘不会满
实际上很多时候都不会发生,就好比fprintf的返回值也需要检查一样,有谁检查吗?

malloc就像思版主说的,基本上肯定成功,如果malloc失败,只有两种可能
1. 地址空间耗尽,通常是daemon发生内存泄露
2 .malloc一个超级大的

所以在linux中,非daemon非太大的长度 malloc是绝对不会失败的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
34 [报告]
发表于 2008-01-24 15:50 |只看该作者
原帖由 yecheng_110 于 2008-1-24 15:24 发表

320G也会用光的吧

这就是架构问题了,不是程序问题了。
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP