一、文件描述符

对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息(file结构体)。

一个进程启动时,默认打开了3个文件,标准输入、标准输出、标准错误,对应文件描述符是0(STDIN_FILENO)、1(STDOUT_FILENO)、2(STDERR_FILENO),这些常量定义在unistd.h头文件中。

另外介绍下面两个函数:

fileno:将文件指针转换为文件描述符

fdopen:将文件描述符转换为文件指针

二、什么是I/O

输入/输出是主存和外部设备之间拷贝数据的过程

设备->内存 (输入操作)

内存->设备 (输出操作)

高级I/O

ANSI C提供的标准I/O库称为高级I/O,通常也称为带缓冲的I/O

低级I/O

通常也称为不带缓冲的I/O

三、文件的打开关闭

open系统调用1:

函数原型

int open(const char *path, int flags);

参数

path :文件的名称,可以包含(绝对和相对)路径

flags:文件打开模式

返回值:

打开成功,返回文件描述符;打开失败,返回-1

open系统调用2:

函数原型

int open(const char *path, int flags,mode_t mode);

参数

path :文件的名称,可以包含(绝对和相对)路径

flags:文件打开模式

mode:  用来规定对该文件的所有者,文件的用户组及系 统中其他用户的访问权限

返回值:

打开成功,返回文件描述符;打开失败,返回-1

下面是文件打开的模式:

O_RDONLY打开一个供读取的文件

O_WRONLY打开一个供写入的文件

O_RDWR打开一个可供读写的文件

O_APPEND写入的所有数据将被追加到文件的末尾

O_CREAT打开文件,如果文件不存在则建立文件

O_EXCL如果已经置O_CREAT且文件存在,则强制open() 失败

O_TRUNC在open() 时,将文件的内容清空

O_CLOEXEC 在进行exec进程替换时关闭打开的文件描述符。

Specifying this flag permits a program to avoid additional  fcntl(2) F_SETFD operations to set the FD_CLOEXEC flag.

O_NONBLOCK 非阻塞模式

linux 打开关闭文件,Linux系统编程-文件打开关闭相关推荐

  1. 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API

    Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...

  2. 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API

    Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...

  3. linux系统编程——文件编程

    linux系统编程--文件编程 文章目录 linux系统编程--文件编程 一.如何创建.修改一个文件 二.linux系统调用的API 三.文件描述符 四.linux系统调用 1.创建文件-creat ...

  4. Linux系统编程-文件的操作

    Linux系统编程-文件操作 前言: Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,硬件设备(键盘.监视器.硬盘.打印机)是文件,就连套接字(socket).网络通 ...

  5. 如何清理系统大量的残余文件和系统垃圾文件?(win10)

    如何清理系统大量的残余文件和系统垃圾文件?(win10) 相信很多朋友都不陌生C盘中的第一个文件吧,他是系统更新所产生的垃圾文件,垃圾文件高达十几个G甚至更多,但是很多人却拿他没办法,这些文件是可删的 ...

  6. Win10怎么修改hosts文件 Win10系统hosts文件

    Win10怎么修改hosts文件 Win10系统hosts文件修改图文教程 Win10怎么修改hosts文件呢?用过winXP和win7系统的伙伴们,都知道winXP和Win7系统可以直接修改host ...

  7. Linux系统编程@文件操作(一)

    只总结了部分常用的内容,详细内容参考<UNIX环境高级编程>及相关书籍. Linux中文件编程可以使用两种方法 Linux系统调用(依赖于系统) C语言库函数(不依赖于系统) Linux系 ...

  8. 【Linux】系统编程——文件编程

    1.文件编程概述: 利用代码操作文件创建.打开.编辑等自动化执行 windows下的文件编辑:打开文档-->编辑文档-->保存文档-->关闭文档 而在Linux我们要使用编程调用ap ...

  9. linux 文件操作 编程,Linux系统编程------------文件操作(基础)

    一.文件操作 1.1 Linux文件系统结构 1.1.1  Linux常见系统目录 /bin  :  存放普通系统可执行的命令(ls wc等) /sbin  :  存放系统管理程序(fsck等) /b ...

最新文章

  1. SAP Netweaver 7.4 SR2 Application Java Installation
  2. springboot之@ConfigurationProperties加载配置文件
  3. linux 文件 跳板机_shell实现跳板机
  4. RuoYi-Cloud 登陆 /code 获取验证码出错
  5. PHP魔术方法小结.md
  6. Android系统默认Home应用程序(Launcher)的启动过程源代码分析(2)
  7. Atitit 游戏的原理与概论attilax总结
  8. spoon mysql教程_kettle 教程(一):简介及入门
  9. linux根目录下各子目录的作用
  10. 基于Matlab App Designer的语音信号分析与处理(一):语音信号的采集,时域、频域分析
  11. 人生的苦难需要时间去磨练
  12. Relay继电器和Swicth开关
  13. Project 2013项目管理教程(3):建立任务间的依赖性
  14. jQuery UI Datepicker 选择时分秒
  15. poi解析excel中图片(导入试题中图片)
  16. 解决import org.junit.Test 和@Test报错
  17. 项目总结之词法分析器
  18. 机械工程毕业论文题目
  19. python平方数_计算范围内的平方数(python)
  20. UCAS - AI学院 - 自然语言处理专项课 - 第7讲 - 课程笔记

热门文章

  1. Android开机画面~(自己还没试验)
  2. 【s操作】上瘾了!继续轻松优雅的解决孩子的初中数学题,matlab入门新方法解题无压力...
  3. 互联网与大数据将成为智能制造的基石
  4. 能源结构进入变革时代 光伏业趋于壮大转型
  5. Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
  6. 批量修改nginx配置文件
  7. zabbix如何监控WEB应用性能
  8. 阿里云SLB(负载均衡)获取真实ip地址, log_format配置
  9. cisco路由器基本实验之一 静态路由的配置(Boson NetSim
  10. 算法提高课-图论-欧拉回路和欧拉路径-AcWing 1124. 骑马修栅栏:欧拉路径、dfs