• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard-读取软连接文件

01/04 13:35
135
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

硬连接文件实际上是指向同一个文件的不同路径,因此读取硬连接文件和读取普通的文件没有什么区别,可以直接使用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] = '';

printf("Soft linked file: %sn", soft);

printf("The symbolic link points to: %sn", buf);

return 0;

}

6.查看执行效果

$ ./readlink

Soft linked file: soft

The symbolic link points to: soft_link.txt

通过运行结果可以看出,软连接文件为soft,软连接指向的文件为soft_link.txt。

相关推荐