open函数定义:open函数是基于Linux系统中的一项函数调用,主要用于打开/创建文件。

                          返回值 = fd(文件描述符);

文件描述符(fd)定义:即“file descriptor”,文件描述符。linux下,所有的操作都是对文件进行操作,而对文件的操作是利用文件描述符(file descriptor)来实现的。

open函数包含的头文件

#include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>

open函数的格式原型:

int open(const char *pathname, int flags);
 int open(const char *pathname, int flags, mode_t mode);

 格式原型中主要包含以下三个参数(重点详解):

const char *pathname:这项参数是一个指针,指向文件路径/文件名;这里使用char型的指针,是因为所指向的文件路径/文件名是一个字符串。

       int flags:表示权限,是一个整数型,这里的权限分为以下三种

             O_RDONLY 只读打开          O_WRONLY 只写打开          0_RDWR 可读可写打开

           🔺注意:以上三种权限一次只能调用一个,文件附带了权限后,打开文件只能用按照这种权限来操作;

           🔺 在调用权限时,还可以附加以下常数:  

O_CREAT

若文件不存在则创建,🔺使用此选项时,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限。

O_EXCL

如果同时指定了O_CREAT,而文件已经存在,则出错。

O_APPEND

每次写时都加到文件的尾端。

O_TRUNC 

打开文件时,如果文件中本来是有内容的,而且为只读或只写打开成功,则将其长度截短为0。

③ mode_t mode:记录待创建文件的访问权限。

-rwxrwxr-x 1 dhw dhw 16000  1月  7 13:12 a.out
-rw-rw-r-- 1 dhw dhw   172  1月  7 12:54 demo1.c
-rw------- 1 dhw dhw     0  1月  7 13:12 file1

               🔺在文件权限这一栏中可以看到有r,w,x三个字母。

                    " r "——————  可读  ——————    用数字4表示;

                   " w " —————— 可写  ——————    用数字2表示;

                   " x " —————— 可执行  —————— 用数字1表示;

                    " - " —————— 普通文件 —————  用数字0表示;

              举例:上图第三行file1文件的权限:“0600”。有“r”和“w”,即数字“4”和“2”,相加为“6”,其余的短横杠“-”用0表示,所以为“0600”。

   open函数两种原型的代码示例:

已经有原文件直接打开:已有名为“file1”的文件,直接使用“O_RDWR”打开即可

//原型:int open(const char *pathname, int flags);
       fd = open("./file1",O_RDWR);

没有原文件,创建打开:使用"O_CREAT"创建名为“file1”的文件,在使用“O_RDWR”打开文件,之后须跟上mode这项参数:“0600”,表示所创建文件的访问权限。

//原型:int open(const char *pathname, int flags, mode_t mode);     
       fd = open("./file1",O_RDWR|O_CREAT,0600);

两种原型和示例代码中的参数一一对应理解即可!