底层文件访问之二:read系统调用

本文详细介绍了Linux系统调用中的read函数,包括其作用、原型、参数说明及返回值解析,还涵盖了可能遇到的各种错误情况和测试代码,帮助读者深入理解文件描述符的读取操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

底层文件访问之二:read系统调用

说明:本文主要是对man 帮助文档和《linux程序设计》第四版的摘录,部分理解来源于个人,请酌情参考。

接着上一篇的write,我们来学习一下read。

Read

系统调用read的作用是:从与文件描述符fd相关联的文件中读取 n bytes个字节的数据。并把它放入到数据区buf中。

概要:

read函数在<unistd.h>头文件中定义。

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

说明:

read()函数尝试从文件描述符fd中读取count个字节到buf开头的缓冲区中。

如果count=0;read返回0,并且没有其他结果,如果count>SSIZE_MAX,结果未指定。

**ssize_t:**有符号整型,与long类似。typedef long size_t

size_t:无符号的ssize_t,:typedef unsigned long size_t

返回值

调用成功返回读取的字节数,文件指示符指到对应的位置。这个返回值可能会比count,比如以下情况:

当文件的整体字节比count小时,读到文件尾。

我们从管道或者终端读取

我们读取时被一个信号打断了等等情况。

调用失败的时候返回-1;并且errno会被设置,这时候文件的指示符位置变化与否是未知的。

可能出现的错误值有:

EAGAIN:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值