首页 > 代码库 > linux的一点一滴---open
linux的一点一滴---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参数是一系列常数值(宏定义常数,以O_开头),可以选择多个常数进行按位或运算符链接起来一起使用。
flags必选项:
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR:读写打开
flags常用可选项:
O_APPEND:追加内容在所打开的文件结尾。
O_CREAT:若文件不存在则创建。如果使用此选项需要提供第三个参数mode.
O_EXCL:如果同时指定 了O_CREAT,并且文件已存在,则出错返回。可用来测试一个文件是否存在。
O_TRUNC:如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断为0字节。
O_NONBLOCK:可设置设备文件以非阻塞打开。
mode参数用来设置文件权限位(八进制表示):
1-----》执行
2-----》写
4-----》读
函数返回值:
open函数执行成功返回当前未使用的最小文件描述符(file descriptor),失败返回-1(并且设置出错信息)。
例:
touch file
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int fd = open("file", O_RDWR | O_CREAT);
printf("fd = %d\n", fd);
return 0;
}
执行结果为fd = 3;
linux的一点一滴---open