簡體   English   中英

打開:沒有 O_CREAT 這樣的文件或目錄

[英]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_CREATopen出現此錯誤意味着您嘗試創建的文件的父目錄其父目錄之一不存在。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM