我想创建一个名为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();
}
如果文件夹/home/Documents/sessionname
存在,则代码错误,因为无法创建文件夹。
如何判断mkdir
是否因为字符串无效或字符串是否为vaild但文件夹已存在而失败?
答案 0 :(得分:4)
如何判断mkdir是否因为字符串无效或字符串是否为vaild但文件夹已存在而失败?
mkdir()
的返回代码显示功能是否成功。如果失败,您应该检查特殊变量errno
,详细信息可以在man
page
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_exception( strerror(errno) );
}
}
注意:这是Linux / Unix(和其他POSIX系统)库函数报告错误情况详细信息的常用方法。
答案 1 :(得分:1)