mkdir -p 在 C 中等效,递归地创建嵌套目录
Posted
技术标签:
【中文标题】mkdir -p 在 C 中等效,递归地创建嵌套目录【英文标题】:mkdir -p equivalent in C that creates nested directories recursively 【发布时间】: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。它在代码中。
Recursive mkdir() system call on Unix 的可能重复项
目录testabc1
是否存在?
@MichaelWalz 不,它没有。
【参考方案1】:
您只能在现有目录中创建目录。如果你想做mkdir -p
的等效操作,你必须做同样的事情,即从路径顶部开始一个接一个地创建目录。
在您的情况下,这意味着mkdir
的/home/abc/testabc1
在mkdir
的/home/abc/testabc1/testabc2
之前。
您的错误消息也具有误导性,因为perror("abc");
会在 any 错误前加上“abc:”。它与目录“abc”无关。
【讨论】:
以上是关于mkdir -p 在 C 中等效,递归地创建嵌套目录的主要内容,如果未能解决你的问题,请参考以下文章