(1)open函数:
#include <unistd.h>
int open(char *pathname, int flags)
参数:
pathname: 欲打开的文件路径名
flags:文件打开方式:
#include <fcntl.h>
O_RDONLY|O_WRONLY|O_RDWR
O_CREAT|O_APPEND|O_TRUNC|O_EXCL|O_NONBLOCK ....
返回值:
成功: 打开文件所得到对应的 文件描述符(整数)
失败: -1, 设置errno
int open(char *pathname, int flags, mode_t mode) 123 775
参数:
pathname: 欲打开的文件路径名
flags:文件打开方式:
O_RDONLY|O_WRONLY|O_RDWR O_CREAT|O_APPEND|O_TRUNC|O_EXCL|O_NONBLOCK ....
mode: 参数3使用的前提, 参2指定了O_CREAT。 取值8进制数,用来描述文件的 访问权限。 rwx 0664
创建文件最终权限 = mode & ~umask
返回值:
成功: 打开文件所得到对应的 文件描述符(整数)
失败: -1, 设置errno
(2)close函数:
strerror, strerror_r - return string describing error number
(3)错误处理函数:与 errno 相关。
printf("xxx error: %d ", errno);
char *strerror(int errnum);
printf("xxx error: %s ", strerror(errno));
void perror(const char *s);
perror("open error");
(4)read函数:
ssize_t read(int fd, void *buf, size_t count);
参数:
fd:文件描述符
buf:存数据的缓冲区
count:缓冲区大小
返回值:
0:读到文件末尾。
成功; > 0 读到的字节数。
失败: -1, 设置 errno
-1: 并且 errno = EAGIN 或 EWOULDBLOCK, 说明不是read失败,而是read在以非阻塞方式读一个设备文件(网络文件),并且文件无数据。
(5)write函数:
ssize_t write(int fd, const void *buf, size_t count);
参数:
fd:文件描述符
buf:待写出数据的缓冲区
count:数据大小
返回值:
成功; 写入的字节数。
失败: -1, 设置 errno
(6)预读入缓输出
用户空间-》内核空间进行反复切换读写数据,系统调用没有设置缓冲区,用户空间调用fread()函数一般有用户缓冲区的默认为4096.