symlink, symlinkat - make a symbolic link for a file
原型如下
#include <unistd.h>
int symlink(const char *target, const char *linkpath);
#include <fcntl.h> /* Definition of AT_* constants */
#include <unistd.h>
int symlinkat(const char *target, int newdirfd, const char *linkpath);
//Both Return: 0 if OK, -1 on error
linkpath创建新的目录项(directory entry)指向target。创建链接符号时,target不需要一定存在。此外两者也不需要在同一个文件系统中。
The symlinkat function is similar to symlink, but the linkpath argument is evaluated relative to the directory referenced by the open file descriptor for that directory (specified by the newdirfd argument). If the linkpath argument specifies an absolute pathname or if the newdirfd argument has the special value AT_FDCWD, then symlinkat behaves the same way as symlink.
readlink, readlinkat - read value of a symbolic link
因为open follows a symbolic link,所以我们需要一种方法打开link本身。就是这两种系统调用完成该功能。
#include <unistd.h>
ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);
#include <fcntl.h> /* Definition of AT_* constants */
#include <unistd.h>
ssize_t readlinkat(int dirfd, const char *pathname,
char *buf, size_t bufsiz);
这些函数组合了open、readandclose的功能。如果成功,会返回读入buf的字节数。在buf中关于symbolic link的内容不以\0结尾。
The readlinkat function behaves the same way as the readlink function when the pathname argument specifies an absolute pathname or when the dirfd argument has the special valueAT_FDCWD. However, when the dirfd argument is a valid file descriptor of an open directory and the pathname argument is a relative pathname, then readlinkat evaluates the pathname relative to the open directory represented by dirfd.
本文详细介绍了Linux下用于创建符号链接的symlink和symlinkat系统调用,包括它们的基本原理、参数及使用场景。同时,文章还对比了两种方法在不同情况下的行为差异,并提供了实例演示。
901

被折叠的 条评论
为什么被折叠?



