调用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函数相关推荐

  1. C语言函数大全-- o 开头的函数

    C语言函数大全 本篇介绍C语言函数大全-- o 开头的函数 1. obstack_init,obstack_free,obstack_alloc,obstack_blank,obstack_grow ...

  2. frida hook svc调用

    如下图所示,当别人在rom上改写了open.cpp函数,当发现打开/proc/cpuinfo文件时,会将其重定向到/system/ubin/cpuinfo 基我们自己定义的cpu ,同理内存/proc ...

  3. 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 ...

  4. 文件系统及相关操作简介

    我们知道,虚拟是操作系统的基本特征之一,虚拟具体体现在三个方面:进程(对CPU的虚拟).地址空间(对内存的虚拟).文件和目录(对持久存储介质的虚拟). 再具体讲解文件系统的实现之前,我们先以cento ...

  5. File I/O (unbufferd) -APUE第三版

    3.1 introduction  介绍 先介绍unix 系统的 五个I/O 函数- open , read, write, lseek, close . 然后 检查 不同 buffer sizes ...

  6. 文件描述符、函数open和openat

    文件描述符 pcb:结构体 一个进程有一个文件描述符:1024 文件描述符:寻找磁盘文件 函数open和openat 函数原型: include<sys/stst.h> #include& ...

  7. linux进程隐藏 hook readdir函数 挂载覆盖/proc/pid 目录

    前言 上篇介绍了如何在有源码的情况下,通过 argv[] 及 prctl 对进程名及参数进行修改,整篇围绕/proc/pid/目录和 ps.top 命令进行分析,做到了初步隐藏,即修改了 /proc/ ...

  8. linux编程-open函数和write函数实现copy命令

    文章目录 文件描述符 文件描述符 ​ 所有的I/O操作的系统调用都以文件描述符,一个非负整数(通常是小整数),来指代打开的文件. open函数打开pathname所标识的文件,并返回文件描述文件描述符 ...

  9. Linux下C库函数到系统调用函数到内核函数调用的过程

    当我们在shell写入一个程序的时候 #include <stdio.h> 此处调用了stdio.h的C标准库,他是存在在glibc中的库函数,他里面通过一些预处理最终会调用系统调用函数, ...

最新文章

  1. 11月21日spring mvc的表单校验培训日记
  2. 2行代码实现小程序分享到朋友圈功能
  3. boost::gregorian模块实现日期相关的测试程序
  4. MySQL二级比office二级_如何快速拿到计算机office二级
  5. 面试项目 java-服务端2 18h58
  6. 机器学习 训练验证测试_测试前验证| 机器学习
  7. Spring学习笔记:配置单数据源
  8. oracle12c asmfd,Oracle 12c新特性--ASMFD(ASM Filter Driver)特性
  9. 小程序云开发——列表页和详情页
  10. c语言love字符怎么打,怎样利用几行简单的c语言代码表白?
  11. 如何判断自己的操作系统是32位还是64位?
  12. 桩身弹性压缩计算公式_压缩弹簧弹力的计算公式
  13. creo绘图属性模板_creo完整制作工程图模板
  14. MySQL 常用命令汇总
  15. Python编程:从入门到实践第二版答案(第七章)
  16. 阿里云centos下载地址
  17. 思科路由器重置密码并保存设置重置密码
  18. 晶体硅太阳能电池产线性能跟踪项目
  19. 玩转RFID(一) - MFRC522模块上手
  20. 域名注册需要云服务器吗,说明申请域名的方法步骤有哪些?域名注册需要云服务器吗?...

热门文章

  1. 【Code pratice】—— 成绩统计、星系炸弹、特别数的和、蛇形填数、日志统计
  2. 数据可视化 d3操作汇总(二):圆弧、饼图、环图、玫瑰图绘制
  3. Devops系统化,从零开始学习容器技术(更新中)
  4. [翻译]Kean' Blog 在一个.NET应用程序中调用AutoCAD(续)
  5. 零售业数据分析的规划思路与应用场景
  6. linux修改端口无效,Centos 7系统版本修改ssh远程端口不生效
  7. PNAS:以移情尴尬为主的社交焦虑者大脑和行为改变
  8. 浏览器的用户代理(User-Agent)
  9. GC 日志解读与分析:千淘万漉虽辛苦,吹尽狂沙始到金
  10. 数据结构——2路归并排序