[英]Open: no such file or directory with O_CREAT
我正在嘗試使用 open 函數創建一個文件,將其稱為
dest_fd = open(fileLocation, O_RDWR | O_CREAT, 0666)
當我運行代碼時,我得到:
fileLocations: /tmp/folder/file.a
open: No such file or directory
(請注意,我打印了 fileLocation 的值以確保它不是相對路徑...)
我試圖做我在其他主題上找到的東西,但它似乎不起作用,它可能出了什么問題?
使用O_CREAT
, open
出現此錯誤意味着您嘗試創建的文件的父目錄或其父目錄之一不存在。 open
不會為您創建整個目錄層次結構; 您必須根據需要走上調用mkdir
的路徑。
在這種情況下,我會做類似的事情
if (mkdir("/tmp/chatty", 0777) && errno != EEXIST)
perror_exit("mkdir /tmp/chatty");
dest_fd = open("/tmp/chatty/libchatty.a", O_RDWR|O_CREAT|O_EXCL, 0666);
/* ... */
如果mkdir
也因ENOENT
失敗,則不必費心遞歸並嘗試創建/tmp
,因為您可能沒有這樣做的權限,而且無論如何,如果/tmp
不存在,則某些事情是非常錯誤的電腦。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.