一、open文件
open 函数用于打开文件,当然除了打开已经存在的文件之外,还可以创建一个新的文件。
#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);
pathname:字符串类型,用于标识需要打开或创建的文件,可以包含路径(绝对路径或相对路径)信息。
flags:调用 open 函数时需要提供的标志,包括文件访问模式标志以及其它文件相关标志。
标志 | 用途 |
---|---|
O_RDONLY | 以只读方式打开文件 |
O_WRONLY | 以只写方式打开文件 |
O_RDWR | 以可读可写方式打开文件 |
O_CREAT | 如果 pathname 参数指向的文件不存在则创建此文件 |
O_EXCL | 此标志一般结合 O_CREAT 标志一起使用,用于专门创建文件。 |
mode:此参数用于指定新建文件的访问权限,只有当 flags 参数中包含 O_CREAT 或 >O_TMPFILE 标志时才有效(O_TMPFILE 标志用于创建一个临时文件)。
宏定义 | 备注 |
---|---|
S_IRUSR | 允许文件所属者读文件 |
S_IWUSR | 允许文件所属者写文件 |
S_IXUSR | 允许文件所属者执行文件 |
S_IRWXU | 允许文件所属者读、写、执行文件 |
S_IRGRP | 允许同组用户读文件 |
S_IROTH | 允许其他用户读文件 |
二、open 函数使用示例
1.使用 open 函数打开一个已经存在的文件,使用只读方式打开
int fd = open("./test.c", O_RDONLY)
if (-1 == fd)
return fd;
2.使用 open 函数打开一个已经存在的文件,使用可读可写方式打开
int fd = open("./app.c", O_RDWR)
if (-1 == fd)
return fd;
3.使用 open 函数打开一个指定的文件,如果该文件不存在则创建该文件,创建该文件时,将文件权限设置如下:文件所属者拥有读、写、执行权限;同组用户与其他用户只有读权限。使用可读可写方式打开:
int fd = open("/home/linux/test", O_RDWR | O_CREAT, S_IRWXU | S_IRGRP | S_IROTH);
if (-1 == fd)
return fd;