首先说明下文件描述符,文件描述符标志,文件状态标志的区别:
    文件描述符:标识文件用的;
    文件描述符标志(目前就只有一个close-on-exec):仅仅是一个标志,当进程fork一个子进程的时候,在子进程中调用了exec函数时就用到了该标志。意义是执行exec前是否要关闭这个文件描述符;
    文件状态标志:是在系统文件表中,关于write、read等标志。

close_on_exec 是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄(参见include/fcntl.h)。当一个程序使用fork()函数创建了一个子进程时,通常会在该子进程中调用execve()函数加载执行另一个新程序。此时子进程将完全被新程序替换掉,并在子进程中开始执行新程序。若一个文件描述符在close_on_exec中的对应比特位被设置,那么在执行execve()时该描述符将被关闭,否则该描述符将始终处于打开状态。

当打开一个文件时,默认情况下文件句柄在子进程中也处于打开状态。因此sys_open()中要复位对应比特位。

设置close on exec标志可通过fcntl(fd, F_SETFD, flags | FD_CLOEXEC)来进行设置,当然flags可先通过F_GETFD获得。

close on exec标志可有如下三个用途:

1、如果调用了exec(),应该关闭指定的套接字;

2、如果设置了此选项,则连接监听器设置所涉及的监听器套接字以close-on-exec标志;

3、一般我们会调用exec执行另一个程序,此时会用全新的程序替换子进程的正文,数据,堆和栈等。此时保存文件描述符的变量当然也不存在了,我们就无法关闭无用的文件描述符了。所以通常我们会fork子进程后在子进程中直接执行close关掉无用的文件描述符,然后再执行exec。

close on exec标志位相关推荐

  1. 【超详总结/理解:正则表达式】特点/元字符/正则表达式中的标志位-flag/RegExp/重复操作与后向引用/匹配模式/表达邮箱/正则表达式对象的方法/利用正则表达式限制网页表单里的文本框输入内容

    文章目录 正则表达式: 正则表达式的用途 正则表达式的组成-元字符 正则表达式的特点 正则表达式中的标志位-flag JavaScript中的正则表达式解析 RegExp 定义 RegExp RegE ...

  2. 标志位和中断位的区别:USART_ClearFlag和USART_ClearITPendingBit

    在STM32的函数库中,这两个函数实现的功能其实是一样的,都是清除对应的标志位,但是标志位和中断位的含义不一样,不是所有的标志位都可以产生中断.查看源代码如下: #define ADC_IT_EOC ...

  3. 多个开关标志位存储的设计思路

    前端时间配合前端需求的时候出现一个场景,需要存储大量的state状态,例如是否开启推送.短信.夜间模式等状态.如果使用单表多字段去存这些信息就显得得不偿失.考虑到开关只有开关状态的情况下,使用01二进 ...

  4. 【Android 逆向】Android 进程注入工具开发 ( 远程进程 注入动态库 文件操作 | Android 进程读取文件所需的权限 | fopen 打开文件标志位 | 验证文件权限 )

    文章目录 前言 一.Android 进程读取文件所需的权限 二.fopen 打开文件标志位 三.验证文件权限 前言 一.Android 进程读取文件所需的权限 通过 注入工具 , 将 libbridg ...

  5. Java之【线程通信】--标志位练习2

    定义一个线程A,输出1 - 10之间的整数,定义一个线程B,逆序输出1 - 10之间的整数,要求线程A和线程B交替输出 方法一:非标志位方法 package Homework; //1 定义一个线程A ...

  6. Java之【线程通信】--标志位练习

    * 写两个线程,一个线程打印1-52,另一个线程答应字母A-Z. * 打印顺序为12A34B56C--5152Z.通过使用线程之间的通信协调关系. 注:分别给两个对象构造一个对象o,数字每打印两个或字 ...

  7. Python正则表达式 re.sub()函数:标志位flags与参数个数问题

    这两天在写爬虫程序,涉及英文文本处理,需要规范化英文标点符号的写法.正常情况下,英文句号.后面需要保证有且只有一个空格,但也有例外情况,比如i.e..e.g..P.S.这种.由于无法预测大小写,因此在 ...

  8. 串口接收标志位语句_如何获取串口的发送和接收的标志位?

    我用C#写了一个小的串口调试软件,并在51的板子上调试成功了,但是换到STM32F103上不行了,由于刚学STM32,还很不熟悉,所以还请各位能否告诉我如何获取串口的发送和接收的标志位.或是帮我把下面 ...

  9. debug 标志位说明

       of  df  if  sf   zf   af   pf   cf 标志位为1 ov  dn ei  ng  zr   ac  pe  cy 标志位为0 nv  up di  pl   nz ...

最新文章

  1. 中国新冠统计20200128-20200227 统计于网络发布数据 便于数据同比分析规律 公开透明 加强防范 减少恐慌 数学来加持
  2. java宠物店多态源代码
  3. python读取大文件的坑_Python读取大文件的坑“与内存占用检测
  4. 后台登录html5模板
  5. 模块的封装之C语言类的继承和派生
  6. 【MySQL】MySQL常见的读写分离方法
  7. oracle统计每个类别,Oracle统计分析函数集之一
  8. 冒泡python代码_用Python写冒泡排序代码
  9. 多伦多大学Self-Driving Cars自动驾驶专项课程(十八)Proportional-Integral-Derivative(PID) Control
  10. TCP/IP基础(三)
  11. 记录走过python的坑:明明安装了某个模块,却提示“no mudule named xxx“
  12. hadoop hdfs合并文件下载到本地单个文件
  13. mysql 查看版本的几种方法
  14. 【C++ 】STL求全排列和组合
  15. GUI界面的视频帧提取
  16. PDF解除密码怎么操作?这个方法可以帮到你
  17. IDE SATA SCSI 三种常见硬盘之间的区别(二)
  18. OPS TPS RPS 吞吐量 查询率 事物数目 每秒查询率 每秒处理事物数目
  19. 黑色星期五c语言程序,黑色星期五
  20. 设置win10桌面、锁屏、密码输入界面背景色、图片

热门文章

  1. php更多式样,php_1
  2. 哈尔滨理工C语言程序设计精髓_计算机科学与信息工程学院C语言程序设计竞赛圆满完成!...
  3. ios 高德挪动地图获取经纬度_高德地图获取地理位置经纬度并将经维度转化为详细地址信息...
  4. 吃鱼可以不挑刺了?华中农业大学发现鳊鱼肌间刺表达基因,可培育“无刺鱼”...
  5. R变量索引 - 什么时候使用 @或$
  6. 真正的出路只有一个(哈佛大学的幸福课)
  7. matlab求感知距离的命令,感知机算法(MATLAB)
  8. jmeter mysql驱动jar包_用 Jmeter 做 Web 接口测试
  9. 1.4编程基础之逻辑表达式与条件分支 03 奇偶数判断
  10. STM32H743+CubeMX-ADC(16bit分辨率)+DMA采样三路模拟量(并行),没过采样。