#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
功能:打开文件
pathname:文件路径
flags:打开文件的方式
返回值:文件描述符,失败返回负值
int open(const char *pathname, int flags, mode_t mode);
功能:打开或创建文件
pathname:文件路径
flags:打开方式
mode:创建文件时的权限
返回值:文件描述符,失败返回负值
int creat(const char *pathname, mode_t mode);
功能:专门用来创建文件,但基本不使用,因为open函数完全具备它的功能。
注意:open/creat所返回的一定是当前未被使用的,最小文件描述符。
一个进程可以同时打开的文件描述符个数,受limits.h中定义的OPEN_MAX宏的限制,POSIX要求不低于16,传统UNIX是63,现代Linux是255。
flags:
O_APPEND 打开文件后位置指针指向末尾
O_CREAT 文件不存在时创建
O_RDONLY 只读权限
O_WRONLY 只写权限
O_RDWR 读写权限
O_TRUNC 清空文件内容
O_EXCL 如果文件存在则创建失败
O_NOCTTY 若pathname指向控制终端,则不将该终端作为控制终端。
O_NONBLOCK 若pathname指向FIFO/块/字符文件,则该文件的打开及后续操作均为非阻塞模式。
O_SYNC write等待数据和属性,被物理地写入底层硬件后再返回。
O_DSYNC write等待数据,被物理地写入底层硬件后再返回。
O_RSYNC read等待对所访问区域的所有写操作,全部完成后再读取并返回。
O_ASYNC 当文件描述符可读/写时,向调用进程发送SIGIO信号。
mode:
S_IRWXU 00700
S_IRUSR 00400
S_IWUSR 00200
S_IXUSR 00100
S_IRWXG 00070
S_IRGRP 00040
S_IWGRP 00020
S_IXGRP 00010
S_IRWXO 00007
S_IROTH 00004
S_IWOTH 00002
S_IXOTH 00001
int close (int fd);
功能:关闭文件,成功返回0,失败返回-1