加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux系统编程之文件与I/O(二) 文件的读取写入

发布时间:2016-09-24 23:43:59 所属栏目:Linux 来源:站长网
导读:一、read系统调用 一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节 函
副标题[/!--empirenews.page--]

一、read系统调用

一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节

函数原型:

ssize_t read(int fd, void *buf, size_t count);

参数:

fd :想要读的文件的文件描述符

buf : 指向内存块的指针,从文件中读取来的字节放到这个内存块中

count : 从该文件复制到buf中的字节个数

返回值:

如果出现错误,返回-1;读文件结束,返回0;否则返回从该文件复制到规定的缓冲区中的字节数

二、write系统调用

用write()系统调用将数据写到一个文件中

函数原型:

ssize_t write(int fd, const void *buf, size_t count);

函数参数:

fd:要写入的文件的文件描述符

buf: 指向内存块的指针,从这个内存块中读取数据写入 到文件中

count: 要写入文件的字节个数

返回值:如果出现错误,返回-1;如果写入成功,则返回写入到文件中的字节个数

三、ioctl 函数

ioctl用于向设备发控制和配置命令,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据。也就是说,read/write读写的数据是in-band数据,是I/O操作的主体,而ioctl命令传送的是控制信息,其中的数据是辅助的数据。例如,在串口线上收发数据通过read/write操作,而串口的波特率、校验位、停止位通过ioctl设置,A/D转换的结果通过read读取,而A/D转换的精度和工作频率通过ioctl设置。

#include <sys/ioctl.h>

int ioctl(int d, int request, ...);

d是某个设备的文件描述符。request是ioctl的命令,可变参数取决于request,通常是一个指向变量或结构体的指针。若出错则返回-1,若成功则返回其他值,返回值也是取决于request。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读