文件输入输出函数:creat , open , close , read , write , lseek等
对于内核而言,所有打开的文件都由文件描述符标识 。 文件描述符是一个非负整数。
读写文件时 ,先调用open或creat函数打开文件,成功执行时都将返回一个文件描述符。在读写时将其作为参数传递给read或write.
文件描述符取值范围 0~255,即每个程序最多打开256个文件。
open 函数 (man open)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open ( const char *pathname , int flags); //pathname 为要打开或创建的文件 , flag为打开方式
int open ( const char *pathname , int flags , mode_t mode); //mode 说明新文件的存取权限
flags 参数
~O_RDONLY 只读
~O_WRONLY 只写
~O_RDWR 可读可写
上面三种打开方式互斥,不可同时使用
~O_CREAT 若文件不存在,采用到第三个参数来说明新文件的权限
~O_EXCL 若O_CREAT被设置,此指令去检查文件是否存在,不存在则建新,存在则打开文件出错。
~O_TRUNC 若文件存在并且以可写方式打开,此标志将文件清空重写。
~O_APPEND 追加
~O_SYNC 同步方式打开文件,任何对文件的修改都回阻塞知道磁盘数据同步以后返回。
~O_NOFLLOW 若参数pathname 所指文件为一符号连接,则会令你打开文件失败。
~O_DIRECTORY 若pathname 所指文件并非为一目录,则会令打开文件失败。
~O_NONBLOCK 或O_NDELAY 以非阻塞的方式打开文件,对于open 及随后对该文件的操作,都会立即返回。
参数mode 与chmod 函数相同。
strerror()函数:通过标准错误的标号,获得标准错误的字符串,方便用户茶摘错误。
errno 是记录系统的最后一次的错误代码,代码是一个整型,在头文件<errno.h>中包含。
通过srerror与errno 搭配使用查看错误。
read 函数
#include <unistd.h>
ssize_t read(int fd , void *buf , size_t count) ;
从文件fd 中读取count 个字节的数据到 buf 所指内存中。
返回0,表示已达到文件尾或者是无可读取的数据,此外文件读写指针会随读取到的字节移动。最好将返回数与参数count作比较。
出错时返回-1,错误代码存入errno.
write函数原型
#include <unstd.h>
ssize_t write (int fd , const void *buf , size_t conut);
将buf所指向的缓存区的数据读取count字节存入fd 所指的文件。其余与read函数相同。