【问题标题】:mkdir -p equivalent in C that creates nested directories recursivelymkdir -p 在 C 中等效,递归地创建嵌套目录
【发布时间】:2014-12-27 07:14:36
【问题描述】:

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

#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,那么我可以成功创建目录。为什么会这样?

【问题讨论】:

  • 创建的testabc2的权限和所有权是什么?你是哪个用户运行程序的?
  • 以非 root 用户身份运行。我将模式指定为 0777。它在代码中。
  • 目录testabc1是否存在?
  • @MichaelWalz 不,它没有。

标签: c linux operating-system filesystems mkdir


【解决方案1】:

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

在您的情况下,这意味着mkdir/home/abc/testabc1mkdir/home/abc/testabc1/testabc2 之前。

您的错误消息也具有误导性,因为perror("abc"); 会在 any 错误前加上“abc:”。它与目录“abc”无关。

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 2020-05-08
    • 2020-02-03
    • 2014-11-19
    • 2018-09-07
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多