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);
两种原型和示例代码中的参数一一对应理解即可!