Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果没有创建文件夹';如果不存在,就什么也不做_C++_Linux_Directory_Mkdir - Fatal编程技术网

C++ 如果没有创建文件夹';如果不存在,就什么也不做

C++ 如果没有创建文件夹';如果不存在,就什么也不做,c++,linux,directory,mkdir,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

我想创建一个名为
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();
    }
finalpath=“/home/Documents”
追加(路径+“/”+会话名);
如果(mkdir(finalpath.c_str(),S|u IRWXU|u IRWXG | S|u IROTH | S|IXOTH)=-1)
{
//无效路径

std::cout如评论所述,在
mkdir
-创建目录-手册页面上提到了它,其中一个错误
mkdir
可以让您得到的是if
[EEXIST]
->命名文件存在。因此它失败。请参阅
mkdir
主页。这里有一个可能的堆栈溢出问题。

如评论所述,它在
mkdir
-创建目录-手动页面中提到,如果
mkdir
出现错误,您可以得到的一个错误是如果
[EEXIST]
->命名文件存在。因此它失败。有关
mkdir
主页,请参阅。这里有一个可能的堆栈溢出

如何检查mkdir是否因字符串无效或字符串无效但文件夹已存在而失败

来自
mkdir()
的返回代码显示函数是否成功。如果失败,应检查特殊变量
errno
,有关详细信息,请访问

if(mkdir(finalpath.c_str(),S|u IRWXU | S|u IRWXG | S|u IROTH | S|IXOTH)=-1)
{
if(errno==EEXIST){
//阿雷迪存在
}否则{
//别的
标准::cout
如何检查mkdir是否因字符串无效或字符串无效但文件夹已存在而失败

来自
mkdir()
的返回代码显示函数是否成功。如果失败,应检查特殊变量
errno
,有关详细信息,请访问

if(mkdir(finalpath.c_str(),S|u IRWXU | S|u IRWXG | S|u IROTH | S|IXOTH)=-1)
{
if(errno==EEXIST){
//阿雷迪存在
}否则{
//别的

std::cout Read你读过吗?你检查过可以从中得到什么错误吗?Read你读过吗?你检查过可以从中得到什么错误吗?可能OP不知道从哪里得到错误代码。可能OP不知道从哪里得到错误代码。你需要包括S_IRWXU,S_IRWXG。你的意思是
std::runtime\u error
而不是
std::runtime_exception
?我找不到任何已经存在的目录上的文档,但存在的权限与您对mkdir的调用不同。您需要包括S_IRWXU、S_IRWXG。您的意思是
std::runtime_error
而不是
std::runtime_exception
?我找不到任何d已存在的目录上的文档,但其权限与对mkdir的调用不同。
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) );
    }
}