昨晚专门抽时间练习了一下文件I/O编程,由于嵌入式Linux是经Llinux裁剪而来的,它的系统调用及用户编程接口API与Linux基本一致,因此,学习Linux中相关内容的基本编程,对以后嵌入式Linux的实际开发是十分有帮助的。
本文介绍几个最最最基本的文件I/O操作函数,如open、close、read、write、lseek等。
1.open
原型:int open(const char *pathname, int flags, int perms)
pathname表示要打开的文件名,flags表示文件要打开的方式,perms表示存取权限。若成功,返回文件描述符(一般用fd表示),失败返回-1。具体的参数请各位自行查阅相关文档。
2.close
原型:int close(int fd)
fd即在上述open函数获得的文件描述符,若成功返回0,出错返回-1。
用法举例:
3.read
原型:ssize_t read(int fd, void *buf, size_t count)
buf是指定存储器读出数据的缓冲区,count指定读出的字节数。成功返回0,否则返回-1。
4.write
原型:ssize_t write(int fd, void *buf, size_t count)
buf是指定存储器写入的数据缓冲区,count是写入的字节数,成功返回已写入的字数,失败返回-1
5.lseek
原型:off_t lseek(int fd, off_t offset, int whence)
offset是偏移量,可正可负(前移、后移),whence有三个参数可供选择:SEEK_SET文件开头,SEEK_CUR文件当前位置,SEEK_END文件结尾。whence配合offset就能确定当前需要操作文件的具体位置了。执行成功,返回文件当前的位移,失败返回-1。
用法举例:
对于有心学习Linux编程的你来说,仅仅看是不够的,起码要在自己的平台环境上,把程序敲敲,看究竟是否实现了自己预想的效果。以上仅对最基本的文件I/O操作函数进行介绍,更多内容我将在之后的学习记录中与大家分享,若有错漏之处恳请各位看官指出。