Err*_*att 4 c file system-calls
我正在尝试使用 open 函数创建一个文件,将其称为
dest_fd = open(fileLocation, O_RDWR | O_CREAT, 0666)
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我得到:
fileLocations: /tmp/folder/file.a
open: No such file or directory
Run Code Online (Sandbox Code Playgroud)
(请注意,我打印了 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);
/* ... */
Run Code Online (Sandbox Code Playgroud)
/tmp如果mkdir失败了ENOENT,也不必费心递归并尝试创建,因为您可能没有这样做的权限,而且无论如何,如果/tmp不存在,计算机就会出现可怕的错误。