![](/img/trans.png)
[英]C system calls open / read / write / close and O_CREAT|O_EXCL
[英]Opposite of O_CREAT|O_EXCL
Linux上的C中是否有辦法僅在文件已存在的情況下才寫入文件? 換句話說,與open(..., O_CREAT|O_EXCL)
。
請注意,我不希望將存在檢查與文件的實際打開分離開(例如預先調用stat()
),因為這將是競爭條件。
為此,我將嘗試使用O_WRONLY打開文件,如果open()不會失敗,則文件存在。 您可以檢查errno來檢查錯誤。
我沒有其他辦法了
嘗試打開不帶O_CREAT
標志的文件時檢查ENOENT
。
未設置ENOENT O_CREAT,並且命名文件不存在; 或O_CREAT設置,並且路徑前綴不存在或path參數指向空字符串。
如果可以使用fopen
,則:
file=fopen(some_sime, "r+");
if (file) fd=fileno(file);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.