创建多级目录

  在UNIX平台下有一个创建目录的API接口 mkdir(),该函数使用比较简单,但如果需要创建多级目录,则操作起来就稍微麻烦些,也有一些公开的代码实现了创建多级目录的功能,而很多都是采用递归调用 mkdir() 创建目录的方式。在 Postfix 代码也有一段代码用于创建多级目录,它的优点是迭代方式创建多级目录,而不是递归调用 mkdir(),于是乎ACL作者将其改造了一下(主要增加了针对WIN32的支持),加入ACL库中。接口比较简单,如下:

/**
 * 功能: 创建多级目录结构
 *  如创建 "/tmp/dir1/dir2" (for unix) 或 "C:\\test\\test1\\test2" (for win32)
 * @param path: 一级或多级目录路径
 * @param perms: 创建权限(如: 0755, 0777, 0644 ...)
 * @return == 0: OK;  == -1, Err
 */
ACL_API int acl_make_dirs(const char *path, int perms);

 

  该函数接口在UNIX、WIN32平台下完全一致,只是在WIN32平台下,其中的参数 perms 是无效的,此外,还有一个差别就是在WIN32平台下各级目录分隔符可以为 "/" 或 "\",而在UNIX平台下分隔符则只能为 "/"。

  以下是一个简单的例子:

#include "lib_acl.h"
#include <stdio.h>

static void test_mkdirs(void)
{
    const char *path = "path1\\path2\\path3\\path4";
    int   perms = 0700, ret;

    ret = acl_make_dirs(path, perms);
    if (ret < 0) {
        printf("create path(%s) error(%s)\n", path, acl_last_serror());
    } else {
        printf("create path(%s) ok\n", path);
    }
}

int main(int argc acl_unused, char *argv[] acl_unused)
{
    test_mkdirs();
    return (0);
}
 

 acl 库下载: http://acl.sourceforge.net/

   个人微博:http://weibo.com/zsxxsz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值