Movatterモバイル変換


[0]ホーム

URL:


read()函数,write()函数,lseek()函数

最新推荐文章于 2025-10-23 21:48:33 发布
原创最新推荐文章于 2025-10-23 21:48:33 发布·8.1k 阅读
· 0
· 13·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

本文详细解析了Linux系统中用于文件操作的三个核心函数:read()、write()和lseek()。read()用于从文件中读取指定数量的字节数据,write()用于将指定数量的字节数据写入文件,lseek()则允许用户调整文件指针的位置。文章结合实例代码,深入探讨了这些函数的工作原理及应用场景。
1.read()函数

read()函数包含在头文件<unistd.h>中, 原型:ssize_t read(int fd,void *buf,size_t count); 函数参数的含义:从文件描述符fd所指的文件中读取count个字节的数据到buf所指向的缓冲区,count为0,不读数据,返回0,返回值就是实际读取的字节数,如果read()顺利返回实际读到的字节数,和参数count比较,若返回值<count,说明文件到了文件末尾,或 读取过程中被信号中断了读取过程,有错误时返回-1;

2.write()函数

write()函数包含在头文件<unistd.h>中, 原型:ssize_t  write(int fd,const void *buf,size_t count); 函数参数的含义:将buf所指的缓冲区中的count 个字节数据写入到文件描述符fd所指示的文件中,文件指针会随之移动,调用成功,write()返回成功写入的字节数;

3.sleek()函数

sleek()函数包含在头文件<sys/types.h>和<unistd.h>中. 原型:off_t lseek(int fildes,off_t offset,int whence); 每个已打开的文件都有一个读写位置,当打开文件通常的读写位置是指向文件的开头,若是以追加的方式打开(调用open 函数时使用了O_APPEND),则读写位置会指向文件末尾,当调用read()或creat()时,读写的位置随之增加;参数fildes为已打开的文件描述符,参数offset为根据参数whence来移动的读写位置的偏移量.文件指针的值等于当前指针的值加上offset的值,参数whence有以下三种取值: 1.SEEK_SET:从文件开始处计算偏移量,文件指针到文件开始处的偏移量为offset. 2.SEEK_CUR:从文件的指针的当前位置开始计算偏移量,文件指针值等于当前指针值加上offset的值,offset允许为负数. 3.SEEK_END:从文件的结尾处计算偏移量,文件指针值等于当前指针的值加上offset的值.offset 允许取负数; 以下是lseek的几种常用方法:

  • 将文件读写位置移动到文件开头:lseek(int fides,0,SEEK_SET);
  • 将文件读写位置移动到文件结尾:lseek(int fides,0,SEEK_END);
  • 获取文件读写指针当前的位置(相对于文件开头):lseek(int fides,0,SEEk_CUR);

注意:linux 系统不允许lseek()对tty设备进行操作;

确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
参与评论您还未登录,请先登录后发表或查看评论

博客等级

码龄10年
108
原创
516
点赞
1487
收藏
299
粉丝
关注
私信

热门文章

分类专栏

展开全部收起

上一篇:
dup,dup2,fcntl,ioctl,系统调用
下一篇:
chmod()函数和fchmod()函数,open()函数和creat()函数,close()函数,umask命令

大家在看

最新文章

目录

展开全部

收起

目录

展开全部

收起

上一篇:
dup,dup2,fcntl,ioctl,系统调用
下一篇:
chmod()函数和fchmod()函数,open()函数和creat()函数,close()函数,umask命令

目录

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp