mkdir -p在C中的等价物

Ank*_*wal 3 c linux filesystems operating-system mkdir

我想在新目录中创建一个新目录.像这样的东西:

#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <string.h>

int main() {

    const char * path = "/home/abc/testabc1/testabc2" ;
    mode_t mode = 0777;

    if (mkdir(path, mode) == -1) {

//        printf("Error occurred : %s ", strerror(errno));
        perror("abc");

    }

    else {

        printf("Directory created\n");
    }


}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到此错误:

abc: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我删除testabc2然后我能够成功创建目录.为什么这样 ?

And*_*mbe 5

您只能在现有目录中创建目录.如果你想做mkdir -p相同的事情你必须做同样的事情,即从路径顶部向下创建一个接一个的目录.

在你的情况,这意味着mkdir/home/abc/testabc1mkdir/home/abc/testabc1/testabc2.

您的错误消息也会产生误导,因为它perror("abc");会在"abc:"之前添加任何错误.它与目录"abc"无关.