Linux之open()、close()函数

您所在的位置:网站首页 open打开文件例子 Linux之open()、close()函数

Linux之open()、close()函数

2024-06-07 20:03| 来源: 网络整理| 查看: 265

目录

open函数

函数介绍 

头文件及函数原型

参数

 close函数

函数介绍

头文件函数原型

 open()、close()函数使用

open函数 函数介绍 

在Linux中open()函数用来打开或创建一个文件,当打开文件失败时返回值为-1;成功则返回作为文件描述符(一个非负的数值)。

头文件及函数原型 #include #include #include //以上三个头文件都是open()所需的头文件 int open(const char *pathname, int flags);//只是打开或创建文件 int open(const char *pathname, int flags, mode_t mode);//打开或创建文件,并给文件赋权限 参数 open()函数参数 pathname打开的文件名或路径,路径用绝对路径flag      标志作用O_RDONLY只读方式打开文件O_WDONLY只写方式打开文件O_RDWR读写方式打开文件 O _ NONBLOCK 非阻塞方式打开文件O_CREAT文件不存在就创建O_EXCL与O_CREAT一起使用,判断文件是否存在。文件存在返回错误信息,O_NOCTTY 不让pathname所指向的终端成为控制终端

O_TRUNC文件清0,若文件存在则文件内的内容将被清空O_APPEND添加方式打开文件,打开文件时,文件指针指向文件末尾,将写入数据添加到文末 O _ SYNC 同步方式写入文件 O_DSYNC 提供同步的I/O数据完整性 O _ ASYNC 当I/O操作可行,产生信号通知进程 O _ DIRECT 无缓冲输入输出 O _ DIRECTORY 若不是目录,则失败modeS_IRUSER | S_IWUSR

设置文件所有者可读可写(即0600)

第一位数字0代表特殊权限(suid:4、sgid:2、sbit:1),不是八进制的意思。一般将其设置为0,即系统默认。

一组宏定义:S_I(R/WX)(USR/GRP/OTH)

R(4):读        W(2):写        X(1):可执行

USR:文件所有者

GRP:文件所属组

OTH:其他所有者

        在给文件赋权限时,在open函数中给的权限并不是文件真正的权限,还要与文件本地的掩码按位与之后的结果才是其真正的权限。通过umask可以获取本地的掩码或者修改本地的掩码。其过程如下图所示。

修改本地俺码

umask 0023 //把本地的掩码修改成0023 /**************** *其中后面三个数字分别代表文件的所有者、所属组、其他用户的权限; *通过设置数字表示取消该用户对文件的权限;上述的2和3分别表示取消了 *用户所属组的写权限和其他用户对该文件写和执行权限。 *****************/

 文件实际权限求法

 close函数 函数介绍

close()顾名思义就是关闭文件,一般与open()函数一起使用。每当打开、读写文件完成后都要使用close函数关闭文件。

头文件函数原型 #include int close(int fd); //参数fd为文件描述符  open()、close()函数使用 #include #include #include //前三个是open函数头文件 #include //close头文件 #include //perror头文件 #include //exit头文件 int main(){ int fd; //定义一个文件描述符变量 //打开文件 //fd = open("hello.c",O_RDWR); //打开文件,若该文件没有则报错 //fd = open("hello.c",O_RDWR|O_CREAT,0777); //打开文件,没有则创建并给文件赋权限 //fd = open("hello.c",O_RDWR |O_CREAT | O_EXCL,0777 ); //参数O_EXCL用来判断文件是否存在,其必须与O_CREAT一起使用才能判断文件是否村在 //O_TRUNC将文件截断为零,即清空文件内容 fd = open("hello.c",O_RDWR |O_CREAT | O_TRUNC,0777 ); //打开文件失败 if (fd== -1){ perror("Open file error"); //通过errno函数的返回值,perror把提示信息和错误信息一起输出 exit(1); } printf("Create %d success!\n",fd); close(fd); //关闭文件,fd为open函数返回的文件描述符 }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3