系统io一般用于打开硬件设备文件,如液晶屏
open -- 打开或创建文件
所需头文件:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
1>文件存在的情况下
函数原型:
int open(const char * pathname, int flags,mode_t mode);
(mode不是必要参数)
int open(”要打开文件的路径“//或指针类型的变量 ,打开文件的方式)
O_RDONLY:只读方式打开文件
O_WRONLY:可写方式打开文件
O_RDWR:读写方式打开文件
O_TRUNC::如果文件存在并且可写,那么文件内容清空
O_CREAT:如果文件不存在则创建文件,mode为文件权限。
O_APPEND:以追加的方式打开文件,每次写入文件光标都是在末尾
2>文件不存在时
函数原型:
int open(const char * pathname, int flags, int perms);
int open(”要打开文件的路径“//或指针类型的变量 ,打开文件的方式|创建文件,所创建文件的权限 //一般为644)
O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三个参数为其设置权限
O_EXCL:如果使用 O_CREAT 时文件存在,则可返回错误消息。这一参数可测试文件是否存在
O_NOCTTY:使用本参数时,如文件为终端,那么终端不可以作为调用open()系统调用的那个进程的控制终端
O_TRUNC:如文件已经存在,并且以只读或只写成功打开,那么会先全部删除文件中原有数据
O_APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾
函数返回值:
成功:返回文件描述符 //文件描述符赋值给int型的变量
出错:-1
read --从指定文件中读取数据
所需头文件:
#include <unistd.h>
函数原型:
ssize_t read(int fd, void *buf, size_t count);
ssize_t read(要读取的文件,读取的文件暂存的地址 //一般为数组或者malloc申请的堆空间,一次要读取多少个字节)
函数返回值:
非0:成功,返回读取到的字节数 //返回值赋值给ssize_t类型的变量
0:文件已被读完
-1:出错
write --将数据写到指定文件
所需头文件:
#include <unistd.h>
函数原型:
ssize_t write(int fd, void *buf, size_t count);
ssize_t write(要写到哪个文件,要的的内容的暂存位置 //一般为数组或者malloc申请的堆空间,一次要写入多少个字节)
函数的返回值:
非0:成功,返回成功写入的字节数 //返回值赋值给ssize_t类型的变量
0:成功
-1:出错
lseek --调整文件光标位置偏移量
所需要的头文件:
#include <unistd.h>
#include <sys/types.h>
函数原型:
ssize_t lseek(int fd, off_t offset, int whence);
ssize_t lseek(要偏移的文件 //一般是驱动文件,要偏移的字节数 //可以是负数,偏移的参考位置:
SEEK_SET:文件开头+offset为新读写位置
SEEK_CUR:目前读写位置+offset为新读写位置
SEEK_END:文件结尾+offset为新读写位置
函数的返回值:
成功:返回当前位置到文件起始位置的字节数
-1:出错
close --关闭文件
所需要的头文件:
#include <unistd.h>
函数原型:
int close(int fd);
int close(文件名 //文件描述符)
函数的返回值:
0:成功 //函数的返回值赋值给int型的变量
-1:出错