我正在运行Ubuntu 16.04,内核版本为4.8.0,glibc版本为2.23。当我使用标志open
和O_DIRECTORY
执行O_CREAT
并且该目录不存在时,将创建常规文件而不是目录。有什么变通方法可以解决这种不直观的行为?
答案 0 :(得分:3)
当我正确理解open
的联合帮助页时,O_DIRECTORY
和O_CREAT
的组合并非意图:
O_DIRECTORY
将失败。我解释"一个目录" as"现有目录"这里。
您可以先使用mkdir
。如果目录已存在,mkdir
将返回错误代码。您只需忽略mkdir
返回的值。然后使用O_DIRECTORY
打开文件:
mkdir(the_file_name, your_desired_mode);
f = open(the_file_name, O_DIRECTORY);