免费注册 查看新帖 |

Chinaunix

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

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

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

论坛徽章:
0
2 [报告]
发表于 2004-02-26 15:50 |只看该作者

考大家一个问题,fclose要不要判断返回值????

老实说FCLOSE和MALLOC我都不检查,
如果这些函数出问题了表明系统也就要完蛋了,
这时候你除了ABORT还能做什么?
[quote]原帖由 "ldap"]考大家一个问题,fclose要不要判断返回值????[/quote 发表:

论坛徽章:
0
3 [报告]
发表于 2004-02-26 15:54 |只看该作者

考大家一个问题,fclose要不要判断返回值????

不要

论坛徽章:
0
4 [报告]
发表于 2004-02-26 15:58 |只看该作者

考大家一个问题,fclose要不要判断返回值????

[quote]原帖由 "google2002"][/quote 发表:



此话差已,对于malloc,如果真的失败了的话,系统是也做不了什么了,但是如果不处理的话,可能会导致更为严重的错误,哪怕让程序安全退出也是好的啊!举个例子,如果数据库管理系统(DBMS)中malloc出错了,而你的程序继续做下去,很有可能导致段错误,当然如果程序写的好的,捕捉到11号信号后做一下清除处理,然后退出;写的不好的,直接退出了,谁去回滚事务等等。就算是捕捉到信号后做处理,在日志里留下个段错误记录好像也不太好看。


对于fclose则确实有检查返回值的必要!

论坛徽章:
0
5 [报告]
发表于 2004-02-26 16:01 |只看该作者

考大家一个问题,fclose要不要判断返回值????

fclose有返回码,但一般不检查,除非特殊情况。

至于malloc不检查,我不赞同,我好像知道为什么Windows总死机了……

论坛徽章:
0
6 [报告]
发表于 2004-02-26 16:03 |只看该作者

考大家一个问题,fclose要不要判断返回值????

fclose我从来不检查。查了一下man手册,说出错的时候返回EOF,比如说这个文件尚未打开。不过我平常的经验发现文件尚未打开而关闭一个空的文件指针会core dump。

论坛徽章:
0
7 [报告]
发表于 2004-02-26 16:07 |只看该作者

考大家一个问题,fclose要不要判断返回值????

malloc我认为应该检查,至少有一种情况是有很大可能会发生,就是内存空间不够的问题,此时malloc肯定会失败。

论坛徽章:
0
8 [报告]
发表于 2004-02-26 16:12 |只看该作者

考大家一个问题,fclose要不要判断返回值????

要最求C代码的高质量!

我不赞成使用f系列函数。
第一、这些函数是stdio的例程,通过系统调用操作文件会得到更大的控制能力。
第二、这些函数在系统调用之上的包装在不同的Unix系统上表现是不一样的。
第三、这些函数调用在内部有一些限制,比如于小于256的文件描述字对应。


对于fclose检查返回值的问题是必须的。

比如磁盘空间没有了,这是你调用了一下fwrite,它很可能会成功返回,因为fwrite只是把数据写到缓冲区中,当你调用fclose的时候,就会不成功,因为它要刷磁盘的。

论坛徽章:
0
9 [报告]
发表于 2004-02-26 16:17 |只看该作者

考大家一个问题,fclose要不要判断返回值????

1。按照目前的操作系统的SWAP机制来说是不可能返回MALLOC失败的,
哪位能告诉我他试过MALLOC失败的,当然你申请分配一个1T的内存空间这种情况不算
2。万一真的返回MALLOC失败,你以为你还能让程序安全退出吗?
至于FCLOSE我觉得绝大多数情况下是没必要的
这个是取决与你开发的效率和安全性之间的比较
原帖由 "ldap" 发表:



此话差已,对于malloc,如果真的失败了的话,系统是也做不了什么了,但是如果不处理的话,可能会导致更为严重的错误,哪怕让程序安全退出也是好的啊!举个例子,如果数据库管理系统(DBMS)中malloc出错了,而?.........

论坛徽章:
0
10 [报告]
发表于 2004-02-26 16:26 |只看该作者

考大家一个问题,fclose要不要判断返回值????

开发效率与安全性的比较。

这是我非常不能赞成的。其实想想,编码过程才占整个软件开发过程很小的一部分时间的。这是一种习惯,其实并不会浪费时间的。我现在在看一本书《UNix高级编程》,不是steven那本,是人民邮电出的,Warren W.Gay写的,整本书里都有很多平时不注意的地方,我觉得很好。大家可以看看。


    做操作系统的不要相信硬件是完美的
    做应用程序的也不要相信操作系统是完美的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP