symlink() - Unix,Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

symlink() - Unix,Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

symlink - 为文件创建新名称

语法

#include <unistd.h>

int symlink(const char *oldpath, const char *newpath);

描述

symlink() 创建一个名为 newpath 的符号链接,其中包含字符串 oldpath

符号链接在运行时被解释为,如果链接的内容已替换为正在跟随的路径以查找文件或目录。

符号链接可能包含 .. 路径组件,如果在链接的开头使用,则引用该链接所在的父目录。

符号链接(也称为软链接)可以指向现有文件或不存在的文件;后一种情况称为悬空链接。

符号链接的权限无关紧要;在跟随链接时忽略所有权,但在请求删除或重命名链接并且链接位于设置了粘滞位 (S_ISVTX) 的目录中时会检查所有权。

如果 newpath 存在,则不会被覆盖。

返回值

成功时,返回零。错误时,返回 -1,并且 errno 被相应地设置。

错误

标签描述
EACCES 拒绝写入包含 newpath 的目录的访问权限,或者 newpath 的路径前缀中的一个目录不允许搜索权限。(另请参阅 path_resolution(2)。)
EEXIST newpath 已经存在。
EFAULT oldpathnewpath 指向您可访问的地址空间之外。
EIO 发生了 I/O 错误。
ELOOP 在解析 newpath 时遇到太多符号链接。
ENAMETOOLONG
  oldpathnewpath 太长。
ENOENT newpath 中的目录组件不存在或是一个悬空符号链接,或者 oldpath 是空字符串。
ENOMEM 内核内存不足。
ENOSPC 包含该文件的设备没有足够的空间来容纳新的目录条目。
ENOTDIR
 用作 newpath 中目录的组件实际上不是目录。
EPERM 包含 newpath 的文件系统不支持创建符号链接。
EROFS newpath 位于只读文件系统上。

备注

不检查 oldpath

删除符号链接引用的名称实际上会删除该文件(除非它还有其他硬链接)。如果不需要此行为,请使用 link()。

符合标准

SVr4、4.3BSD、POSIX.1-2001。有关具有相同名称的多个文件以及 NFS,请参阅 open(2)。

参见



previous next Printer Friendly

广告


  

广告



广告