open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要的文件的属性和用户权限等各种参数。
1.open函数的定义和参数
#include <sys/types.h> //这里提供类型pid_t和size_t的定义
#include <sys/stat.h>
#include <fcntl.h>
//当文件存在时的定义方式
int open(const char *pathname, int flags);
//当文件不存在时的定义方式
int open(const char *pathname, int flags, mode_t mode);
open函数的返回值如果操作成功,它将返回一个文件描述符,如果操作失败,它将返回-1。
参数含义:
pathname:在open函数中第一个参数pathname是指向想要打开的文件路径名,或者文件名。我们需要注意的是,这个路径名是绝对路径名。文件名则是在当前路径下的。
flags:flags参数表示打开文件所采用的操作,我们需要注意的是:必须指定以下三个常量的一种,且只允许指定一个。 - O_RDONLY:只读模式 - O_WRONLY:只写模式 - O_RDWR:可读可写
以下的常量是选用的,这些选项是用来和上面的必选项进行按位或起来作为flags参数。
以下三个常量同样是选用的,它们用于同步输入输出
mode:mode参数表示设置文件访问权限的初始值,和用户掩码umask有关,比如0644表示-rw-r–r–,也可以用S_IRUSR、S_IWUSR等宏定义按位或起来表示。要注意的是,有以下几点
2.实例
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc,char const *argv[]){
int fd;
fd = open("test.txt", O_RDONLY | O_CREAT, 0664);
printf("fd=%d\n", fd);
return 0;
}
测试运行:
fd=3
3.open常见错误
4.open函数与fopen函数区别
从来源来分,这两者很好区分: