Unix 上的递归 mkdir() 系统调用

2024-01-25

阅读具有该名称的 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(使用前将#替换为@)

Unix 上的递归 mkdir() 系统调用 的相关文章

随机推荐

  • 如何从 Firebase 中删除数据库?

    这一定是在盯着我的脸 但没有看到命令 如何从新 Firebase 的控制台中删除未使用的 Firebase 数据库 谷歌没有提供答案 这还是第一次 如果您不想删除项目而只想删除数据库 另一种方法是在计算机上创建一个文件empty json像
  • 从 InnerHTML 内的代码隐藏向页面添加 ASP 控件

    我正在尝试从后面的代码向网页添加一个按钮 我的主页上有一个空的 div 在需要时可以打开和关闭 然而 我希望动态创建的内容 因为 div 内容可以根据条件而改变 我意识到在我的 ASP 控件中我使用了 反斜杠 来取消我的 HTML 我现在遇
  • 两对多的数据关系是否应该被视为多对多?

    我有 2 个数据库表 Teams 和 Games 出于此问题的目的 我们正在处理足球队和比赛 每场比赛只有两支球队 通常是主队和客队 但有时两支球队都可以保持中立 我的问题是我是否应该使用 Games 表中的 2 个外键 home team
  • 两个内容提供商访问同一个数据库

    Hi all 我想知道如果希望两个完全不同的 Android 应用程序访问和操作同一个数据库 是否存在一种普遍首选的实现范例值得尊重 是否建议甚至技术上可以这样做 这样的架构会是什么样子 截至目前 我正在考虑让这两个应用程序实现自己的Con
  • WPF 无法从 url 检索 WebP 图像?

    我无法从网址检索图像 以前 在设置 HttpClient 标头之前 我根本无法连接到该站点 我可以从其他来源检索图像 但不能从这个特定来源检索图像 检索图像的代码 var img new BitmapImage img BeginInit
  • C# 中的“this[0]”是什么意思?

    我正在浏览一些库代码并看到如下方法 public CollapsingRecordNodeItemList List get return this 0 as CollapsingRecordNodeItemList 包含此方法的类不是列表
  • 调试时在 Visual Studio 2019 中将代码设置为只读

    当我使用 Visual Studio 2017 时 我的代码是只读的 直到我点击 全部中断 或断点 我很确定这是开箱即用的 无需我更改任何选项 我正在讨论使用 C 和编辑并继续进行 Windows 桌面开发 在 2019 年 我总是能够更改
  • 在具有完整日历功能的事件框中设置每种不同的颜色

    我在完整日历功能中设置每个事件框中的颜色时遇到问题 目前 我只能在 fc daygrid event dot 中设置 我可以知道如何设置每个事件框中的背景颜色吗 下面是我的编码 document addEventListener DOMCo
  • PyGame-角色离开屏幕

    我正在尝试用 pygame 制作游戏 但我不知道如何防止我的角色离开屏幕 设置限制 我有一个由用户输入控制的 png 图像 但角色可能会正常离开可见屏幕区域 我不知道该怎么做 我在窗户周围画了一个矩形 pygame draw rect 但我
  • 如何从 Java 中的 .dat 文件中读取一行,然后需要将其分隔开?

    我正在尝试在 TextPad 中使用 Java 读取 dat 文件 dat 文件有多行代码 但每一行都有单独的信息 我的主方法和对象类中的不同方法需要这些信息 如何分离文件中提供的信息并将单独的部分输入到我的任何类中 我知道如何从 t xt
  • 处理空的 UITableView。打印友好消息

    我有一个 UITableView 在某些情况下 为空是合法的 所以而不是显示 应用程序的背景图像 我更愿意在屏幕上打印一条友好的消息 例如 该列表现在为空 最简单的方法是什么 UITableView 的backgroundView 属性是你
  • Jquery - 如果页面已加载

    是否有任何技巧如何在 javascript 中启动一个函数 该函数在页面完全加载时启动 如果您指的是 HTML 文档加载后 请使用ready event document ready function 或者简写 function 如果您的意
  • 提交消息正文中是否允许使用特殊字符?

    我在提交消息的正文中使用了特殊字符 例如 和或 这是允许的还是我应该仅使用文本 我没有找到真正的 answear 而且我不想弄乱我的 github 历史记录 所以 answear 真的会帮助我 git 提交消息中唯一不允许的字符是 NUL
  • Android AltBeacon库:如何找到信标布局?

    我正在使用一种新型信标进行测试 这是我从调试中得到的结果 onScanResult ScanResult mDevice 20 73 2A 09 3E 41 mScanRecord ScanRecord mAdvertiseFlags 26
  • 如何重建表以释放已删除的旧列所使用的空间

    我有一个 MSSQL 聚集索引 我想重建它 因为我删除了一些列并且我想释放空间 在文献中 我读到 对于堆 你可以写 ALTER TABLE myHeap REBUILD 对于聚集索引 ALTER INDEX IX myIndex ON my
  • 如何连接到 LocalDb

    我使用 SqlLocalDb msi 包安装了 LocalDb 并且可以使用服务器名称使用 SSMS 连接到它 LocalDb v11 0 到目前为止 一切都很好 问题是 当我尝试通过 NET 4 5 应用程序连接到它时 出现错误 服务器未
  • 将动态创建的行中的数据保存到数据库

    我正在使用 Codeigniter 我创建了一个包含不同列的表 我想在单击 按钮时动态创建行 现在我可以使用 jquery 创建行 我想将数据保存到数据库中 当我单击 按钮时 如何将每行的值保存到数据库中 您可以对此使用ajax请求 首先当
  • 如何让在一个进程上运行的参与者向在单独进程上运行的另一个参与者发送消息?

    我想让运行在不同进程 或节点 上的参与者向运行在不同进程 或节点 上的其他参与者发送消息 同时保持容错和负载平衡 我目前正在尝试使用 Akka Cluster 的分片功能来完成此任务 但是 我不确定如何实现这一点 我有以下反映我的种子节点的
  • 致命错误:对 Swift 类使用未实现的初始化程序“init()”

    我正在使用 Markdown TextView 1 将基本 Markdown 添加到UITextView The TextView是一个子类MarkdownTextView 但是 当使用复制和粘贴时 出现以下错误 致命错误 对类使用未实现的
  • Unix 上的递归 mkdir() 系统调用

    阅读具有该名称的 Unix 系统调用的 mkdir 2 手册页后 该调用似乎不会在路径中创建中间目录 而只会在路径中创建最后一个目录 有没有什么方法 或其他函数 可以创建路径中的所有目录 而无需手动解析我的目录字符串并单独创建每个目录 不幸