底层文件访问之三:open系统调用
说明:本文主要是对man 帮助文档和《linux程序设计》第四版的摘录,部分理解来源于个人,请酌情参考。
学习了write和read,再理解open也很简单。
Open
open:创建文件描述符,所关联的文件可以是直接打来,也可以是创建并打开。
简单来说:open建立了一条道文件或者设备的访问路径。如果调用成功,它将返回一个可以被read和write等其他系统调用使用的文件描述符。这个文件描述符是唯一的。它不会与任何其他运行中的进程共享,除非是fork了子进程。如果两个进程同时打开一个文件,他们会分别得到两个不同的文件描述符。如果他们都对文件进行写操作,那么他们会各写各的,它们分别接着自己上次离开的位置继续往下写,数据不会交织在一起,而是会彼此覆盖。我们可以使用文件锁功能来防止这种事件。
概要:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
说明:
准备打开的文件或者设备的名字作为参数path传递给函数。
oflags