我有一個完整的路徑存儲在char full_path[1000]
,我想知道是否存在任何在該位置。如何測試無法訪問的「文件」的存在?
(接下來的事情,這個檢查後,我的代碼會做的是建立在該位置的東西,但我希望它算作一個錯誤,如果已經有那麼點意思,而不是與rm -rf
相當於清除斑點)
現貨可以通過一個文件或目錄或甚至一個鏈接到一些不再視爲現有目標如被佔用:
lrwxrwxrwx 1 user grp 4 Jun 16 20:02 a-link -> non-existent-thing
隨着無效鏈接,access(full_path, F_OK)
是要告訴我我無法訪問full_path
,這可能是因爲(1)此處不存在任何內容,或者因爲(2)鏈接無效。
鑑於此,確定full_path
是否存在任何問題的最佳方法是什麼?
char char full_path [1000]存儲文件路徑或只有一個directoyr? – mustangDC
如果文件已經存在,open(path,O_CREAT | O_EXCL,mode)將返回失敗(-1),否則創建文件。這不像試圖「統計」,這是原子和安全的。 – EOF
如果您無法訪問完整路徑 - 您無法訪問它。因此無法檢查。在創建它之前檢查是否存在某個東西會創建一個可被利用的競爭條件。 –