|
硬连接文件实际上是指向同一个文件的不同路径,因此读取硬连接文件和读取普通的文件没有什么区别,可以直接使用open()、read()等函数读取硬连接文件,读取软连接文件有所区别。 在用 open 函数打开一个软连接文件时,操作系统会自动解析这个连接,并打开它所指向的实际文件。因此,open 操作实际上是针对软连接目标文件的,所以也并不能直接使用read函数操作软连接文件,所以这里我们就要使用readlink()来读取软连接文件所指向的目标文件,以下是readlink函数的介绍: readlink 用于读取软连接文件所指向的目标文件。 1.头文件 #include <unistd.h> 2.函数原型 ssize_t readlink(const char *pathname, char *buf, size_t bufsiz); 3.参数 pathname:指向符号连接文件的路径名的字符串。这个路径可以是绝对路径或相对路径。 buf:指向一个字符数组的指针,用于存放符号连接目标路径的内容。 bufsiz:指定 buf 缓冲区的大小,以字节为单位。 4.返回值 成功时返回实际读取的字节数(不包括终止的空字符)。这个值表示目标路径的长度。返回 -1,并设置 errno 以指示错误类型。 5.示例:(使用readlink读取软连接文件) #include <unistd.h> #include <stdio.h> #include <errno.h> #include <string.h> int main(){ char buf[1024]; char *soft = "soft"; ssize_t len = readlink(soft, buf, sizeof(buf) - 1); if (len == -1) { perror("readlink"); return 1; } buf[len] = '\0'; printf("Soft linked file: %s\n", soft); printf("The symbolic link points to: %s\n", buf); return 0; } |
6.查看执行效果 $ ./readlink Soft linked file: soft The symbolic link points to: soft_link.txt |
|
通过运行结果可以看出,软连接文件为soft,软连接指向的文件为soft_link.txt。
|