2016-11-26 102 views
0

我正在关注中的示例代码。黑客:开发的艺术并且在运行以下操作时遇到问题。当目录不存在时,使用`open`打开相关文件

datafile = (char *) ec_malloc(20); 
strcpy(datafile, "/tmp/notes"); 

fd = open(datafile, O_WRONLY|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR); 
if (fd == -1) 
    fatal("in main() while opening file"); 

的错误信息是:

[!!] Fatal Error in main() while opening file: No such file or directory

凡在“没有这样的文件或目录”位与自定义fatal()函数创建。

请注意,不存在于程序的位置,但O_CREAT标志应该说明(或我想的)。我试过将strcpy段切换到".\\tmp\\notes",但结果是一样的。如何创建目录中尚不存在的目录?

我在Windows 10上使用MinGW并正在编译w/gcc

回答

1

你说不存在“在程序的位置”。这意味着你正在一个目录FOO中运行程序,并期望它创建一个像FOO/tmp/notes这样的文件。但是你真正要求的是/ tmp/notes,这是一个绝对路径。您可能需要不带前导斜杠的tmp/notes,但这也是一个目录加上一个文件,并且open()不会创建该目录。因此,无论是使用notes作为在当前目录中打开的文件,还是使用tmp/notes并首先拨打mkdir("tmp")

+0

嗯,打开不会创建目录,只有文件?改变路径为“笔记”完美运作。看来我误解了O_CREAT标志。谢谢! – aiokos

相关问题