Linux文件的IO操作

所需积分/C币:30 2019-02-25 22:39:21 1.13MB PDF
19
收藏 收藏
举报

Linux文件的IO操作,电子科技大学,read和write函数示例
◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii cose函数 wwwuestc.edu.cn close(关闭文件) 头文件 #include <unistd.h> 函数原型 int close( int fd) 函数说明 当使用完文件后若已不再需要则可使用 close0关闭该文件, close0会让数据写回磁盘,并释放 该文件所占用的资源。参数fd为先前由open0或 creat0所返回的文件描述符; 返回值 若文件顺利关闭则返回0,发生错误时返回-1。 附加说明 虽然在进程结束时,系统会自动关闭已打开的文件,但仍建议自行关闭文件,并检查返回值。 ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii read函数 wwwuestc.edu.cn read(由已打开的文件读取数据) 头文件 #include <unistd.h> ●定义函数 ssize t read(int fd, void buf size t count) 函数说明 read0会把参数fd所指的文件传送 count个字节到buf指针所指的内存中。若参数 count为0,则read0不会有作用并返回0。返回值为实际读取到的字节数,如果返回 0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移 动 返回值 成功返回读取的字节数,出错返回-1。 ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii read函数 wwwuestc.edu.cn ●read函数实际读到的字节数少于要求读的字节数时: 读普通文件,在读到要求字节数之前就到达文件尾; 当从终端设备读,通常一次最多读一行; 当从网络读时,网络中的缓冲机构可能造成返回值小于所要求读的字节数 某些面向记录的设备,如磁带,一次最多返回一个记录 ●读操作完成后,文件的当前位置将从读之前的位置加上实际读的字节数 当有错误发生时则返回-1,错误代码存入erno中,而文件读写位置则无法 预期 ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii write函数 wwwuestc.edu.cn write(将数据写入已打开的文件内) 头文件 #include <unistd.h> 函数原型 ssize t write(int fd, const void buf size t count) 函数说明 write会把参数buf所指的内存写入 count个字节到参数fd所指的文件内。当然,文件读写位置也会随之移 动; 返回值 如果顺利 write会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入erno中。 write出错的 原因可能是磁盘满、没有访问权限、或写超过文件长度限制等等 附加说明 将数据写入已打开的文件内。对于普通文件,写操作从文件当前位置开始写(除非打开文件时指定了 O APPEND选项)。写操作完成后,文件的当前位置将从写之前的位置加上实际写的字节数 ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii write函数 wwwuestc.edu.cn 数据无法一次性读完时 第二次读buf中数据时,读位置指针并不会自动移动 按如下格式实现读位置移动: write(fp,p1+len,( strlen(p1)-len),直至指针恢复 o Write-次可以写的最大数据范围是8192 写入数据大小最好小于bu中的值 Count参数值大于SS| ZE MAX,则 write调用的结果未定义 > Count参数值为0时, write调用会立即返回0这个值 ● Write调用返回时,内核已经将缓冲区所提供的数据复制到内核的缓冲区 但是无法保证数据已经写出到预定的目的地 ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii Read和Wrte函数示例 wwwuestc.edu.cn #include <stdio h> #ⅰ nclude< stdlib.h #include <unistd h int main(void) har buf[100] int num =0: if( (num read (STDIN FILENO, buf, 10))==-1) printf (read error ) error(-1) ) else i ∥/将键盘输入又输出到屏幕上 write(STDOUT FIlENO, buf, num) return ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii ioct函数 wwwuestc.edu.cn ioct(设备驱动程序中对设备的O通道进行管理) 头文件 include< sys/ioctl.h> 定义函数 int ioctl(int fd, int cmd, .J: 函数说明 ioctl能对一些特殊的文件(主要是设备)进行一些底层参数的操作。许多字符设备都使用oct请求来完成对 设备的控制 返回值 成动返回0。当有错误发生时则返回-1,错误代码存入erno中 附加说明 ioct是设备驱动程序中对设备的/O通道进行管理的函数。所谓对O通道进行管理,就是对设备的一些特性 进行控制,例如串口的传输波特率、马达的转速等等。 ◎ 皂↓神撤学 tritisity Ef Eiaataale latta if leehaate n at Eii oct函数 wwwuestc.edu.cn 应用: int ioctl (int fd, int cmd,)i 内核: co arg Inode fil gEz): int (*ioctl)(struct inode *node, struct file *filp, unsigned int cmd, unsigned long arg); 应用层与驱动函数的oct之间的联系

...展开详情
试读 12P Linux文件的IO操作
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享学徒

关注 私信
上传资源赚钱or赚积分
最新推荐
Linux文件的IO操作 30积分/C币 立即下载
1/12
Linux文件的IO操作第1页
Linux文件的IO操作第2页
Linux文件的IO操作第3页

试读结束, 可继续读1页

30积分/C币 立即下载 >