嵌入式学习第十九天——文件IO

目录

缓冲

文件描述符

open函数

参数

常见的 flags

返回值

read函数

参数

返回值:

write函数

参数

返回值:


缓冲

在 C 语言中,缓冲通常分为三种类型:全缓冲、行缓冲和无缓冲。它们的行为决定了数据如何被缓存并何时实际写入输出设备或文件。

全缓冲 (Fully Buffered)

数据在缓冲区中积累到一定量(4k)后或fflush 被调用时才会写入目标设备。

行缓冲 (Line Buffered)

数据会在遇到换行符 (\n)、缓冲区满(1k)或 fflush 被调用时才会写入目标设备。

无缓冲 (Unbuffered)

每次写操作都直接写入目标设备,缓冲区不使用。

文件描述符

文件描述符(File Descriptor)是一个非负整数,代表进程打开的文件或其他 I/O 资源。它用于标

识和操作文件,如读取、写入和关闭。操作系统在内核中维护一个文件描述符表,每个打开的文件

都会被分配一个唯一的文件描述符。

文件描述符通常是从 0 开始的整数,标准输入(stdin)为 0,标准输出(stdout)为 1,标准错误

输出(stderr)为 2。

open函数

函数原型:int open(const char *pathname, int flags, ...);

参数

pathname: 要打开的文件的路径名(字符串)。

flags: 控制文件打开方式的标志(整数),如 O_RDONLYO_WRONLYO_RDWR 等。

mode: 文件权限模式(可选),当 flags 包含 O_CREAT 时使用。它指定新文件的权限(如 0666)。如果文件已经存在,则此参数被忽略。

常见的 flags

O_RDONLY: 以只读模式打开文件。

O_WRONLY: 以只写模式打开文件。

O_RDWR: 以读写模式打开文件。

O_CREAT: 如果文件不存在则创建新文件。

O_TRUNC: 如果文件存在且以写入模式打开,则将文件长度截断为零。

O_APPEND: 以追加模式打开文件,每次写操作都会将数据追加到文件末尾。

返回值

成功时,open 函数返回一个非负整数,表示文件描述符。

失败时,返回 -1,并设置 errno 以指示错误原因。

read函数

函数原型:ssize_t read(int fd, void *buf, size_t count);

参数

fd: 文件描述符,通常通过 open  函数获得。

buf: 指向存储读取数据的缓冲区的指针。

count: 要读取的字节数。

返回值

成功时,返回读取的字节数。

出错时,返回 -1 并设置 errno

write函数

函数原型:ssize_t write(int fd, const void *buf, size_t count);

参数

fd: 文件描述符,通常通过 open 或 socket 函数获得。

buf: 指向包含要写入数据的缓冲区的指针。

count: 要写入的字节数。

返回值

成功时,返回实际写入的字节数。

出错时,返回 -1 并设置 errno

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值