一、文件描述符(file descriptor):通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。
二、open函数
1.函数格式:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flag, mode_t mode)
2.参数:
1)需要打开的文件名(字符串):路径(缺省时为当前路径)+文件名。
2)打开模式(整形常量):系统宏定义。
O_CREAT:文件存在则使用,不存在则新建 。
O_EXCL:检查文件是否存在,不存在则返回错误信息-1。
O_CREAT|O_EXCL:检查文件是否存在,不存在则新建,存在则返回错误信息-1。
O_APPEND:每次都从文件尾写入。
O_TRUNC:存在文件时清空并打开。
3)仅当创建新文件时才使用,用于指定文件的访问权限位。
3.返回值:打开成功返回文件描述符,打开失败则返回-1。
三、creat函数(鸡肋完全可用open函数代替)
1.函数格式:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int creat(const char *pathname, mode_t mode)
2.参数:
1)需要创建的文件名(字符串):路径(缺省时为当前路径)+文件名。
2)仅当创建新文件时才使用,用于指定文件的访问权限位。
3.返回值:创建成功返回文件描述符,如果文件已存在则返回错误信息-1。
四、read函数
1.函数格式:#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
2.参数:
1)需要读取的文件对应得描述符(整形)。
2)读取的数据存储的地方(指针)。
3)请求读取的字节数
3.返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0。
五、write函数
1.函数格式:#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
2.参数:
1)需要写入的文件对应得描述符(整形)。
2)写入的数据存储的地方(指针)。
3)请求写入的字节数。
3.返回值:成功返回写入的字节数,出错返回-1并设置errno写常规文件时,write的返回值通常等于请求写的字节数。
六、lseek函数(文件“光标”位置设置)
1.函数格式:
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
2.参数:
1)需要操作的文件对应得描述符(整形)。
2)标准位偏移量(指针):为正则向文件末尾移动(向前移),为负数则向文件头部(向后移)
3)标准位置(整形常量)
SEEK_SET:文件头。
SEEK_CUR:当前光标位置。
SEEK_END:文件末尾。