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

飞凌嵌入式ElfBoard-文件I/O的了解探究之文件描述符和FILE指针转换

11/20 11:56
442
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在同一个文件上执行I/O操作时,系统I/O与标准I/O可以混合使用,借助于库函数 fdopen、fileno可以将文件描述符和FILE指针对象之间进行转换。

1.3.3.1 fileno

用于将传入的FILE指针转换成整数文件描述符。

1)头文件

#include <stdio.h>

2)函数原型

int fileno(FILE *stream);

3)参数

stream:表示需要转换的文件指针。

4)返回值

如果成功,返回得到文件描述符,如果转换错误将返回-1,并且会设置errno来指示错误原因。

1.3.3.2 fdopen

用于将传入的整数文件描述符转换成FILE指针。

1)头文件

#include <stdio.h>

2)函数原型

FILE *fdopen(int fd, const char *mode);

3)参数

fd:要操作的文件描述符。

mode:表示打开文件用的操作(1-6必选其一,7和8可以省略)

⚫"r":以只读方式打开文件,文件必须存在。

⚫"w":以写入方式打开文件,如果文件不存在则创建文件;如果文件存在,则清除原文件内容并创建文件。

⚫"a":以追加方式打开文件,如果文件不存在则创建文件;如果文件存在,则追加内容到文件的末尾。

⚫"r+":相当于在“r”权限的基础上添加写入权限,以读写方式打开文件,文件必须存在。

⚫"w+":相当于在“w”权限基础上添加“r+”权限,可以对文件做读取和写入,如果文件不存在则创建文件;如果文件存在,则清空原文件内容并创建文件。

⚫"a+":相当于在“a”权限基础上添加“r+”权限,可以对文件做读取和写入,如果文件不存在则创建文件,如果文件存在,则追加内容到文件的末尾。

⚫"b":二进制文件。

⚫"t":文本文件。

4)返回值

如果成功,返回得到文件指针,如果转换错误将返回-1,并且会设置errno来指示错误原因。

相关推荐