要做到可靠而可移植的检验出乎意料的困难。
如果从你检验到你打开文件前,这个文件被(别的进程) 生成或删除了, 所做的任何检验都会失效。
三个可能用作检验的函数是stat(), access() 和fopen()。
当使用fopen() 作近似检验时, 用只读打开, 然后马上关闭, 但是失败并不代表不存在。
这里, 只有fopen() 据有广泛的可移植性, 如果系统提供access, 而程序用了Unix 的UID 设置特性, 要特别小心使用。
不要去预测像打开文件这类操作是否成功, 通常直接尝试再查验返回值会更好, 如果失败了再申诉。
当然, 如果你要避免复写已存在的文件, 这个方法并不适用, 除非打开文件有象O EXCL 的参数, 那就可以做到你所要的效果。