zwo*_*wol 17
你不能可靠地做到这一点.在检查文件是否存在以及何时创建文件之间,可以创建另一个进程.
你应该继续创建文件.根据您尝试执行的更大的操作,如果文件已存在,您可能需要以下选项之一来执行操作:
open("file", O_RDWR|O_CREAT, 0666)open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666)open("file", O_WRONLY|O_CREAT|O_APPEND, 0666)open("file", O_WRONLY|O_CREAT|O_EXCL, 0666)其中大部分,但不幸的是并非所有,都具有更高级别iostream接口的等价物.open根据您拥有的C++库,可能还有一种方法可以将iostream包装在您获取的文件描述符周围.
此外,我应该提一下,如果你想原子地替换文件的内容(所以没有进程看到一个不完整的文件),唯一的方法是将新内容写出到一个新文件,然后用rename它来移动它在旧文件上.