阅读具有该名称的 Unix 系统调用的 mkdir(2) 手册页后,该调用似乎不会在路径中创建中间目录,而只会在路径中创建最后一个目录。有没有什么方法(或其他函数)可以创建路径中的所有目录,而无需手动解析我的目录字符串并单独创建每个目录?
不幸的是,没有系统调用可以为您执行此操作。我猜这是因为没有一种方法可以对错误情况下应该发生的情况有真正明确的语义。它应该保留已经创建的目录吗?删除它们?如果删除失败怎么办?等等...
然而,自己推出非常容易,并且可以快速谷歌搜索“' 提出了许多解决方案。这是接近顶部的一个:
http://nion.modprobe.de/blog/archives/357-Recursive-directory-creation.html http://nion.modprobe.de/blog/archives/357-Recursive-directory-creation.html
static void _mkdir(const char *dir) {
char tmp[256];
char *p = NULL;
size_t len;
snprintf(tmp, sizeof(tmp),"%s",dir);
len = strlen(tmp);
if (tmp[len - 1] == '/')
tmp[len - 1] = 0;
for (p = tmp + 1; *p; p++)
if (*p == '/') {
*p = 0;
mkdir(tmp, S_IRWXU);
*p = '/';
}
mkdir(tmp, S_IRWXU);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)