vnop_rename 入口点

用途

重命名文件或目录。

语法

int vnop_rename (srcvp, srcdvp, oldname, destvp, destdvp, newname, crp)
struct vnode * srcvp;
struct vnode * srcdvp;
char * oldname;
struct vnode * destvp;
struct vnode * destdvp;
char * newname;
struct ucred * crp;

参数

描述
斯尔茨夫普 指向要重命名的对象的虚拟节点 (v-node)。
斯尔德夫普 指向 斯尔茨夫普 参数所驻留的目录的 v 节点。 旧对象的父目录和新对象的父目录可以相同。
旧名称 标识该对象的旧名称。
代茨夫普 指向新对象的 "V" 节点。 仅当新对象存在时才使用此指针。 否则,此参数为空字符。
德兹德夫普 指向该新对象的父目录。 新对象和旧对象的父目录可以是相同的。
NewName 指向此对象的新名称。
茨尔普 点至 克雷德 结构。 此结构包含应用程序可用来验证访问许可权的数据。

描述

vnop_rename 入口点由逻辑文件系统调用,以重命名文件或目录。 此入口点提供以下重命名操作:

  • 将旧对象重命名为存在于另一个父目录中的新对象。
  • 将旧对象重命名为在其他父目录中不存在的新对象。
  • 将旧对象重命名为同一父目录中存在的新对象。
  • 将旧对象重命名为在同一父目录中不存在的新对象。

为确保此入口点例程正确执行, 逻辑文件系统 将保证以下各项:

  • 未跨文件系统重命名文件名。
  • 旧对象和新对象 (如果已指定) 不相同。
  • 旧父目录和新父目录具有相同类型的 v 节点

执行环境

vnop_rename 入口点只能从 流程环境 中调用。

返回值

描述
重大安全事件数量 指示成功。

/usr/include/sys/errno.h 文件返回非零返回值以指示失败。