boost :: file_system :: create_directory不创建目录,但ErroCode是SUCCESS

时间:2016-10-26 14:38:47

标签: c++ linux boost boost-filesystem

所以,我使用的是像

这样的简单代码
boost::system::error_code ec;
if (!boost::filesystem::create_directory(out_path.parent_path(), ec)) {
    std::cerr << "couldn't create directory\n";
    std::cerr << ec.message() << "\n";
    return -1;
}

我正在尝试创建目录传递绝对文件路径为out_path。结果是,我进入if分支,ec.message()返回Success。 我拥有out_path目录的所有权限,无论是读,写,执行。

我完全被生气了。我可以从bash创建具有相同路径的目录,但我不能使用我编写的c ++代码。 但是,当我将相对传递作为out_path传递时,例如“temp”,并且从运行c ++程序的位置创建目录时,没有失败。

请帮助我,我真的不明白这里有什么:(

1 个答案:

答案 0 :(得分:1)

create_directory返回false时,表示它没有创建目录。造成这种情况的最可能原因是该目录已经存在!在这种情况下,它将返回false,但不会设置error_code

您问题中的代码假定函数是否返回false则发生错误,但这是错误的。 False表示它没有创建。