要做到可靠而可移植的检验出乎意料的困难。如果从你检验到你打开文件前, 这个文件被 (别的进程) 生成或删除了, 所做的任何检验都会失效。 三个可能用作检验的函数是 stat(), access() 和 fopen()。 当使用 fopen() 作近似检验时, 用只读打开, 然后马上关闭, 但是 失败并不代表不存在。这里, 只有 fopen() 据有广泛的可移植性, 如果系统提供 access, 而程序用了 Unix 的 UID 设置 特性, 要特别小心使用。
不要去预测像打开文件这类操作是否成功, 通常直接尝试再 查验返回值会更好, 如果 失败了再申诉。当然, 如果你要避免复写已存在的文件, 这 个方法并不适用, 除非 打开文件有象 O_EXCL 的参数, 那就可以做到你所要的效果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。