一切皆文件
UNIX/Linux为操作系统把服务和设备都抽象成了文件,并提供了一套简单而统一的接口,这部分接口就是文件读写。也就是说UNIX/Linux系统中的任何对象都可以被当作某种特殊的文件,以文件的形式访问。
文件分类
目录文件、设备文件、Socket文件、管道文件、普通文件、链接文件
文件相关的系统调用
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
功能:打开文件
pathname:文件的路径
flags:打开文件的方式
O_RDONLY 只读
O_WRONLY 只写
O_RDWR 读写
O_APPEND 追加,文件位置指针在末尾
O_CREAT 文件不存在则创建
O_EXCL 如果文件存在则创建失败
O_TRUNC 如果文件存在则清空
O_NDELAY 非阻塞,打开文件后的操作以非阻塞模式进行。
O_SYNC 同步,写入数据后等待数据被写入到底层硬件后才返回。
O_ASYNC 异步,当文件可读/写时向调用的进程发送信号SIGIO。
返回值:文件描述符,类似于标准库的FILE*,代表一个打开的文件。
int open(const char *pathname, int flags, mode_t mode);
功能:创建文件
flags:O_CREATE
mode:
S_IRWXU 00700 拥有者 读