【问题标题】:posix rename behaviourposix 重命名行为
【发布时间】:2012-04-01 10:38:23
【问题描述】:

如果我们尝试将文件夹重命名为包含某些文件的现有文件夹会发生什么

前:

如果我们尝试重命名 d2-->D3

删除现有的 d3 并尝试重命名或任何奇怪的行为会是怎样的行为

【问题讨论】:

    标签: unix operating-system posix posix-api


    【解决方案1】:

    POSIX 文档可在线获取,Google 搜索您的问题会将您带到此处:http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html

    如果新参数命名的目录存在,则将其删除并将旧重命名为新。

    【讨论】:

      【解决方案2】:

      正如“parsifal”所回答的那样,可以找到 rename() 的文档,例如在http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html

      我在这里添加自己的答案,因为 parsifal 的答案遗漏了一个关键细节,即:

      如果新命名现有目录,则必须为空 目录。

      在 errno 编号列表中,我们有

      [EEXIST] 或 [ENOTEMPTY] new命名的链接是一个非空目录的目录

      因此,如果 new 指向的目录不为空,rename() 将返回 -1,errno 将设置为 EEXIST 或 ENOTEMPTY,并且没有进行任何更改。

      【讨论】:

        猜你喜欢
        • 2020-03-07
        • 2012-08-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多