打开:没有 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_CREAT 时,来自 open 的这个错误意味着您尝试创建的文件的 parent 目录 ,或其 parent 之一,不存在。 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 不存在,则计算机出现严重错误。