头文件
#include<fcntl.h>
功能
打开或创建文件(建立一个文件描述符,read、write函数需要通过文件描述符对指定文件进行读取与写入的操作)
函数原型
int open(const char*pathname,int flags,mode_t mode);
参数说明
1、pathname: 要打开或创建的目标文件
2、flags: 用来说明此函数的多个功能选项,常用的选项如下所示:
O_RDONLY: 只读打开
O_WRONLY: 只写打开
O_RDWR: 读,写打开
这三个常量,必须制定一个且只能指定一个
O_CREAT: 若文件不存在,则创建它,需要使用mode选项,mode说明文件的访问权限(读、写、执行)。
O_APPEND: 追加写,如果文件已经有内容,这次打开文件所 写的数据附加到文件的末尾而不覆盖原来的内容
返回值
失败:-1
成功:文件描述符,依次打开的文件描述符的值是依次增加的,从0开始依次增加
示例
#include<stdio.h>
#include<fcntl.h>
void usage(void)
{
printf("./open cmd\n"
"cmd:0 read only\n"
"cmd:1 write only\n"
"cmd:2 read and write\n"
"cmd:3 create file\n"
"cmd:4 append write\n");
}
int main(int argc,char **argv)
{
int ret = -1, cmd = -1, data = -1, fd = -1;
cmd = atoi(argv[1]);
switch(cmd){
case 0:
fd = open("test",O_RDONLY);
break;
case 1:
fd = open("test",O_WRONLY);
break;
case 2:
fd = open("test",O_RDWR);
break;
case 3:
fd = open("test",O_CREAT,0777);
break;
case 4:
fd = open("test",O_APPEND);
break;
default:
usage();
break;
}
close(fd);
return 0;
}