Pet*_*111 1 c++ linux directory mkdir
我想创建一个名为sessionname. 如果具有此名称的文件夹已经存在,那很好,我不想做任何事情。
现在我这样做:
finalpath = "/home/Documents"
finalpath.append(path + "/" + sessionname);
if (mkdir(finalpath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1)
{
//INVALID PATH
std::cout << "path is invalid, cannot create sessionnamefolder" << std::endl;
throw std::exception();
}
Run Code Online (Sandbox Code Playgroud)
此代码错误,如果文件夹/home/Documents/sessionname存在,因为无法创建文件夹。
如何检查是否mkdir因为字符串无效或字符串有效但文件夹已存在而失败?
如何检查 mkdir 是否因为字符串无效或字符串有效但文件夹已存在而失败?
返回代码mkdir()显示函数是否成功。如果失败,您应该检查特殊变量errno,详细信息可以在手册页上找到
if (mkdir(finalpath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1)
{
if( errno == EEXIST ) {
// alredy exists
} else {
// something else
std::cout << "cannot create sessionnamefolder error:" << strerror(errno) << std::endl;
throw std::runtime_error( strerror(errno) );
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这是 Linux/Unix(和其他 POSIX 系统)库函数报告错误情况详细信息的常用方法。