open、openat和close函数
调用open或openat函数可以打开或创建一个文件。
#include<fnctl.h>
int open(const char *path, int oflag,.../* mode_t mode */);
int openat(int fd, const char *path, int oflag, .../* mode_t mode */);
参数:
path:要打开或创建的文件。
oflag:用来说明此函数的多个选项,由指定的一个或多个常量进行“或"运算构成oflag参数。
读写模式常量:(这5个常量中必须指定一个且只能指定一个)。
常量 | 含义 |
---|---|
O_RDONLY | 只读打开 |
O_WRONLY | 只写打开 |
O_RDWR | 读、写打开 |
O_EXEC | 只执行打开 |
O_SEARCH | 只搜索打开 |
下列常量是可选的:
常量 | 含义 |
---|---|
O_APPEND | 每次写时都追加到文件的尾端 |
O_CLOEXEC | 把FD_CLOEXEC常量设置为文件描述符标志 |
O_CREAT | 若此文件不存在则创建它 |
O_DIRECTORY | 如果path引用的不是目录,则出错 |
O_EXCL | 如果同时指定了O_CREAT,而文件已存在,则出错 |
O_NOCTTY | 如果path引用的是终端设备,则不将该设备分配作为此进程的控制终端 |
O_NOFOLLOW | 如果path引用的是一个符号链接,则出错 |
O_NONBLOCK | 如果path引用的是一个FIFO、一个块特殊文件或一个字符特殊文件,则设置打开/后续操作为非阻塞方式 |
O_SYNC | 每次write等待物理I/O完成,更新所需的I/O |
O_TRUNC | 如果此文件存在,而且为只写或读-写成功打开,则将其长度截断为0 |
O_TTY_INIT | 如果打开一个还未打开的终端设备,设置非标准termios参数值,使其符号Simple Unix Specification |
fd:fd将open和openat区分,共有3种情况。
(1)path指定的是绝对路径名,fd被忽略,openat相当于open。
(2)path指定的是相对路径名,fd指出相对路径名在文件系统中的开始地址(在path的基础上打开fd)。
(3)path指定的是相对路径名,fd为AT_FDCWD,路径名在当前工作目录获取,openat在操作上与open函数类似。
返回值:
成功,则返回文件描述符;
出错,返回-1.
#include<fcntl.h>int main()
{open("test.txt",O_RDONLY);return 0;
}
函数close
#include<unistd.h>
int close(int fd);
关闭一个打开文件。
open、openat和close函数相关推荐
- C语言函数大全-- o 开头的函数
C语言函数大全 本篇介绍C语言函数大全-- o 开头的函数 1. obstack_init,obstack_free,obstack_alloc,obstack_blank,obstack_grow ...
- frida hook svc调用
如下图所示,当别人在rom上改写了open.cpp函数,当发现打开/proc/cpuinfo文件时,会将其重定向到/system/ubin/cpuinfo 基我们自己定义的cpu ,同理内存/proc ...
- UINX环境高级编程笔记 第3章 文件I/O
UNIX环境高级编程 第三章 文件I/O 3.1 引言 3.2 文件描述符 3.3 函数open和openat 3.4 函数creat 3.5 函数close 3.6 函数lseek 3.7 函数re ...
- 文件系统及相关操作简介
我们知道,虚拟是操作系统的基本特征之一,虚拟具体体现在三个方面:进程(对CPU的虚拟).地址空间(对内存的虚拟).文件和目录(对持久存储介质的虚拟). 再具体讲解文件系统的实现之前,我们先以cento ...
- File I/O (unbufferd) -APUE第三版
3.1 introduction 介绍 先介绍unix 系统的 五个I/O 函数- open , read, write, lseek, close . 然后 检查 不同 buffer sizes ...
- 文件描述符、函数open和openat
文件描述符 pcb:结构体 一个进程有一个文件描述符:1024 文件描述符:寻找磁盘文件 函数open和openat 函数原型: include<sys/stst.h> #include& ...
- linux进程隐藏 hook readdir函数 挂载覆盖/proc/pid 目录
前言 上篇介绍了如何在有源码的情况下,通过 argv[] 及 prctl 对进程名及参数进行修改,整篇围绕/proc/pid/目录和 ps.top 命令进行分析,做到了初步隐藏,即修改了 /proc/ ...
- linux编程-open函数和write函数实现copy命令
文章目录 文件描述符 文件描述符 所有的I/O操作的系统调用都以文件描述符,一个非负整数(通常是小整数),来指代打开的文件. open函数打开pathname所标识的文件,并返回文件描述文件描述符 ...
- Linux下C库函数到系统调用函数到内核函数调用的过程
当我们在shell写入一个程序的时候 #include <stdio.h> 此处调用了stdio.h的C标准库,他是存在在glibc中的库函数,他里面通过一些预处理最终会调用系统调用函数, ...
最新文章
- 11月21日spring mvc的表单校验培训日记
- 2行代码实现小程序分享到朋友圈功能
- boost::gregorian模块实现日期相关的测试程序
- MySQL二级比office二级_如何快速拿到计算机office二级
- 面试项目 java-服务端2 18h58
- 机器学习 训练验证测试_测试前验证| 机器学习
- Spring学习笔记:配置单数据源
- oracle12c asmfd,Oracle 12c新特性--ASMFD(ASM Filter Driver)特性
- 小程序云开发——列表页和详情页
- c语言love字符怎么打,怎样利用几行简单的c语言代码表白?
- 如何判断自己的操作系统是32位还是64位?
- 桩身弹性压缩计算公式_压缩弹簧弹力的计算公式
- creo绘图属性模板_creo完整制作工程图模板
- MySQL 常用命令汇总
- Python编程:从入门到实践第二版答案(第七章)
- 阿里云centos下载地址
- 思科路由器重置密码并保存设置重置密码
- 晶体硅太阳能电池产线性能跟踪项目
- 玩转RFID(一) - MFRC522模块上手
- 域名注册需要云服务器吗,说明申请域名的方法步骤有哪些?域名注册需要云服务器吗?...
热门文章
- 【Code pratice】—— 成绩统计、星系炸弹、特别数的和、蛇形填数、日志统计
- 数据可视化 d3操作汇总(二):圆弧、饼图、环图、玫瑰图绘制
- Devops系统化,从零开始学习容器技术(更新中)
- [翻译]Kean' Blog 在一个.NET应用程序中调用AutoCAD(续)
- 零售业数据分析的规划思路与应用场景
- linux修改端口无效,Centos 7系统版本修改ssh远程端口不生效
- PNAS:以移情尴尬为主的社交焦虑者大脑和行为改变
- 浏览器的用户代理(User-Agent)
- GC 日志解读与分析:千淘万漉虽辛苦,吹尽狂沙始到金
- 数据结构——2路归并排序