基础知识练习
士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭
读者:怎样显示 GIF 和 JPEG 图象?
小林:这跟你用的显示环境有关, 有可能环境已经提供了这些函数。
读者:怎样检验一个文件是否存在?
小林:要做到可靠而可移植的检验出乎意料的困难。如果从你检验到你打开文件前,这个文件被 (别的进程) 生成或删除了, 所做的任何检验都会失效。三个可能用作检验的函数是 stat(), access() 和 fopen()。
当使用 fopen() 作近似检验时, 用只读打开, 然后马上关闭, 但是失败并不代表不存在。这里, 只有fopen() 据有广泛的可移植性, 如果系统提供 access, 而程序用了 Unix 的 UID 设置特性, 要特别小心使用。
不要去预测像打开文件这类操作是否成功, 通常直接尝试再查验返回值会更好, 如果失败了再申诉。
当然, 如果你要避免复写已存在的文件, 这个方法并不适用, 除非打开文件有象 O_EXCL 的参数, 那就可以做到你所要的效果。