免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ldap
打印 上一主题 下一主题

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

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

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

呵呵,当你写的多UNIX服务器你就会知道什么时候要检查什么时候不需要了
如果每个地方都检查你的代码在非常复杂的逻辑处理模块是很难返回到上一层,特别是你调用之前就占用了锁之类的资源的时候。

另外建议你别用fopen/fclose的,
我只用open/close,而且open之后就不释放直到程序退出才释放的

如果写嵌入式系统我会考虑这些返回值,如果是普通的UNIX服务器,我不会检查
原帖由 "ldap" 发表:
开发效率与安全性的比较。

这是我非常不能赞成的。其实想想,编码过程才占整个软件开发过程很小的一部分时间的。这是一种习惯,其实并不会浪费时间的。我现在在看一本书《UNix高级编程》,不是steven那本,是人民..........

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

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

看看postgres源代码就知道怎么会跳到上层,甚至上几层。这是仁者见仁智者见智的事情了,不讨论也罢。

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

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

postgres作为一个数据库底层存储,写文件是他最重要的功能,自然要检查fclose;
但是普通的UNIX服务器用FOPEN通常都是读写一些配置或者日志,
两者的重要性根本不同。
这个就是我说的开发效率和需要的安全性的对比!
[quote]原帖由 "ldap"]看看postgres源代码就知道怎么会跳到上层,甚至上几层。这是仁者见仁智者见智的事情了,不讨论也罢。[/quote 发表:

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

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

malloc是在堆里分配空间的,你的堆有多大?malloc分配的不是物理内存,更不是交换区,基本概念先要搞懂!

至于什么深层返回的问题,我建议各层有各层的逻辑,你出现错误时只关闭本层的文件,并给上层一个标志出错的返回码就可以了,上层的文件归上层自己关闭。

难怪现在有这么多垃圾程序,还自以为高深呢,不过是把简单问题自己给复杂化了而已!

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

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

你如果这么说,我是可以理解的。

在postgres底层存储的部分,没有用fopen系列函数的,道理你肯定明白,你也赞成。

OK,这篇帖子到此结束,我只是举个例子,至于如何使用,还是要看具体的环境。

当然对于大家研究而言,我想我们还是要求精益求精,对吧。

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

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

我说的是虚拟内存
你还挺有意思的,如果堆不在不是物理内存也不在交换区,那是哪里出来的?
莫非是天上掉下来的?

至于深层返回错误代码之类的我就不讨论了,只要你想实现都可以做,重复多次这是一个开发效率的问题

再说服务器程序写的好不好不是说一个检查系统调用决定的,
如果还对这个死缠烂打,只能说明还在UNIX服务器的初级程序员阶段

原帖由 "FH" 发表:
malloc是在堆里分配空间的,你的堆有多大?malloc分配的不是物理内存,更不是交换区,基本概念先要搞懂!

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

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

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

如果你这样做出问题了表明你是错的,
如果你这样做媒出问题去不见得你是对的。
呵呵
weizzil_chinaun 该用户已被删除
18 [报告]
发表于 2004-02-26 17:57 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
19 [报告]
发表于 2004-02-26 23:01 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

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

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

我的意思是说malloc的大小不取决于物理或虚拟内存,取决于堆的大小。

我同意就这个问题到此为止,毕竟每个人所处的阶段和层次不一样,玩5年的人和玩15年的人如果能看法一致,说明5年的那位是天才,15年的那位是饭桶。

俺是15年的饭桶。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP