文件I/O

本文详细介绍了Linux系统中进行I/O操作的相关概念,如一切皆文件原则,以及open(),close(),read(),write()和lseek()等系统调用的使用方法和注意事项。这些函数在处理设备文件,如串口通信时起到关键作用。
摘要由CSDN通过智能技术生成

本项目何处用到I/O操作?

本项目中协调器通过串口与上位机 通信
串口设备被模拟成
/dev/ttyUSB0、/dev/ttyUSB1、 /dev/ttyS0、
/dev/ttyS1
应用程序只需要通过系统调用操作设备文件
• open()/read()/write()/close()…

什么是文件IO

在LINUX/UNIX系统下,有着 一切皆文件的定义,
所谓文件IO就是指文件的 输入和 输出。

Linux下文件类型

函数介绍

系统调用
文件I/O介绍
• open()
• close()
• read()
• write()
• lseek()

open()

调用open()函数可以打开或者创建一个文件。

 

open() 调用成功返回文件描述符,失败返回-1,并设置errno
open调用返回的文件描述符一定是最小的未用描述符数字。
open()可以打开设备文件,但是不能创建设备文件,设备文件必须使用mknod()创建

 

(open后光标还是置于最前面)

close()

调用close()函数可以关闭一个打开的文件。

调用成功返回0,出错返回-1,并设置errno。
当一个进程终止时,该进程打开的所有文件都由内核自动关闭。
关闭一个文件的同时,也释放该进程加在该文件上的所有记录锁。

read()

调用read()函数可以从一个已打开的可读文件中读取数据。

 

fd:读操作从文件的当前位移量处开始,在成功返回之前,该位移量增加实际读取的字节数。
buf:文件描述符
Count 参数需要由调用者来分配内存,并在使用后,由调用者释放分配的内存。
表示缓冲区大小,一次最多读取count个数据。
read()调用成功返回读取的字节数,
如果返回0,表示到达文件末尾,
如果返回-1,表示出错,通过errno设置错误码。

write()

调用write()函数可以向一个已打开的可写文件中写入数据。

对于普通文件,写操作从文件的当前位移量处开始,如果在打开文件时,指定了O_APPEND参
数,则每次写操作前,将文件位移量设置在文件的当前结尾处,在一次成功的写操作后,该
文件的位移量增加实际写的字节数。
write()调用成功返回已写的字节数,失败返回-1,并设置errno。
write()的返回值通常与count不同,因此需要循环将全部待写的数据全部写入文件。
write()出错的常见原因:磁盘已满或者超过了一个给定进程的文件长度限制。

 

(write后光标置于最后)

lseek()

调用 lseek()函数可以显示的定位一个已打开的文件。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值