mkdir -p在C中的等价物

时间:2014-10-31 02:31:00

标签: c linux operating-system filesystems 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");
    }


}

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

abc: No such file or directory

如果我删除testabc2,那么我就能够成功创建目录。为什么这样?

1 个答案:

答案 0 :(得分:5)

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

在您的情况下,这意味着在mkdir /home/abc/testabc1之前mkdir的{​​{1}}。

您的错误消息也具有误导性,因为/home/abc/testabc1/testabc2将使用“abc:”添加任何错误。它与目录“abc”无关。

相关问题