我正在关注黑客攻击:剥削艺术中的示例代码,并在运行以下内容时遇到问题。
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()
功能创建“无此文件或目录”之前的位。
请注意,/tmp/notes
在程序的位置不存在,但O_CREAT
标志应该考虑到这一点(或者我认为)。我已尝试将strcpy
段切换为".\\tmp\\notes"
,但结果相同。如何创建在调用程序的目录中尚不存在的目录?
我在Windows 10上使用MinGW并且正在编译w / gcc
。
答案 0 :(得分:1)
你在程序的位置说“{1}}不存在”。这意味着您正在目录FOO中运行该程序,并期望它创建一个像FOO / tmp / notes这样的文件。但你实际要求的是/ tmp / notes,这是一个绝对的路径。你可能想要没有前导斜杠的tmp / notes,但这也是一个目录和一个文件,/tmp/notes
不会创建目录。因此,只需使用open()
作为要在当前目录中打开的文件,或使用notes
并首先调用tmp/notes
。