Linux中,文件有为操作系统和设备提供了一个简单而统一的接口。在Linux中,几乎一切都可以看做文件 。
Linux对文件的操作有两种方式文件IO函数(系统调用)和标准IO库函数调用。系统调用是最直接的方式,库函数调用最终也是通过系统调用实现的。可认为库函数调用是对系统调出于效率考虑而做出的优化。
二者区别:
系统调用是操作系统相关的,因此一般没有跨操作系统的可移植性。
库函数调用是系统无关的,因此可移植性好。标准的IO库函数对文件的操作最终是通过系统调用实现的,但标准io函数库采用缓存技术,减少系统调用的次数。
系统调用通常用于底层文件访问(low-level file access),例如在驱动程序中对设备文件的直接访问。
库函数调用通常用于应用程序中对一般文件的访问。
一、文件IO函数–系统调用
基本函数:
#include<unistd.h>
int open(const char *path, int flags);
-->打开或创建一个文件
int open(const char *path, int flags, mode_t mode );
-->当用于创建文件时需要用第二个函数指明文件的相关权限信息
size_t write(int fd, const void *buf, size_t nbytes);
-->
size_t read(int fd, void *buf, size_t nbytes);
int close(int fd);
off_t lseek(int filedes, off_t offset, int whence);
-->设置读写文件的当前位置
whence有三个参数SEEK_SET/SEEK_CUR/SEEK_END(文件开始/当前/结束位置),则文