close on exec标志位
首先说明下文件描述符,文件描述符标志,文件状态标志的区别:
文件描述符:标识文件用的;
文件描述符标志(目前就只有一个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标志位相关推荐
- 【超详总结/理解:正则表达式】特点/元字符/正则表达式中的标志位-flag/RegExp/重复操作与后向引用/匹配模式/表达邮箱/正则表达式对象的方法/利用正则表达式限制网页表单里的文本框输入内容
文章目录 正则表达式: 正则表达式的用途 正则表达式的组成-元字符 正则表达式的特点 正则表达式中的标志位-flag JavaScript中的正则表达式解析 RegExp 定义 RegExp RegE ...
- 标志位和中断位的区别:USART_ClearFlag和USART_ClearITPendingBit
在STM32的函数库中,这两个函数实现的功能其实是一样的,都是清除对应的标志位,但是标志位和中断位的含义不一样,不是所有的标志位都可以产生中断.查看源代码如下: #define ADC_IT_EOC ...
- 多个开关标志位存储的设计思路
前端时间配合前端需求的时候出现一个场景,需要存储大量的state状态,例如是否开启推送.短信.夜间模式等状态.如果使用单表多字段去存这些信息就显得得不偿失.考虑到开关只有开关状态的情况下,使用01二进 ...
- 【Android 逆向】Android 进程注入工具开发 ( 远程进程 注入动态库 文件操作 | Android 进程读取文件所需的权限 | fopen 打开文件标志位 | 验证文件权限 )
文章目录 前言 一.Android 进程读取文件所需的权限 二.fopen 打开文件标志位 三.验证文件权限 前言 一.Android 进程读取文件所需的权限 通过 注入工具 , 将 libbridg ...
- Java之【线程通信】--标志位练习2
定义一个线程A,输出1 - 10之间的整数,定义一个线程B,逆序输出1 - 10之间的整数,要求线程A和线程B交替输出 方法一:非标志位方法 package Homework; //1 定义一个线程A ...
- Java之【线程通信】--标志位练习
* 写两个线程,一个线程打印1-52,另一个线程答应字母A-Z. * 打印顺序为12A34B56C--5152Z.通过使用线程之间的通信协调关系. 注:分别给两个对象构造一个对象o,数字每打印两个或字 ...
- Python正则表达式 re.sub()函数:标志位flags与参数个数问题
这两天在写爬虫程序,涉及英文文本处理,需要规范化英文标点符号的写法.正常情况下,英文句号.后面需要保证有且只有一个空格,但也有例外情况,比如i.e..e.g..P.S.这种.由于无法预测大小写,因此在 ...
- 串口接收标志位语句_如何获取串口的发送和接收的标志位?
我用C#写了一个小的串口调试软件,并在51的板子上调试成功了,但是换到STM32F103上不行了,由于刚学STM32,还很不熟悉,所以还请各位能否告诉我如何获取串口的发送和接收的标志位.或是帮我把下面 ...
- debug 标志位说明
of df if sf zf af pf cf 标志位为1 ov dn ei ng zr ac pe cy 标志位为0 nv up di pl nz ...
最新文章
- 中国新冠统计20200128-20200227 统计于网络发布数据 便于数据同比分析规律 公开透明 加强防范 减少恐慌 数学来加持
- java宠物店多态源代码
- python读取大文件的坑_Python读取大文件的坑“与内存占用检测
- 后台登录html5模板
- 模块的封装之C语言类的继承和派生
- 【MySQL】MySQL常见的读写分离方法
- oracle统计每个类别,Oracle统计分析函数集之一
- 冒泡python代码_用Python写冒泡排序代码
- 多伦多大学Self-Driving Cars自动驾驶专项课程(十八)Proportional-Integral-Derivative(PID) Control
- TCP/IP基础(三)
- 记录走过python的坑:明明安装了某个模块,却提示“no mudule named xxx“
- hadoop hdfs合并文件下载到本地单个文件
- mysql 查看版本的几种方法
- 【C++ 】STL求全排列和组合
- GUI界面的视频帧提取
- PDF解除密码怎么操作?这个方法可以帮到你
- IDE SATA SCSI 三种常见硬盘之间的区别(二)
- OPS TPS RPS 吞吐量 查询率 事物数目 每秒查询率 每秒处理事物数目
- 黑色星期五c语言程序,黑色星期五
- 设置win10桌面、锁屏、密码输入界面背景色、图片
热门文章
- php更多式样,php_1
- 哈尔滨理工C语言程序设计精髓_计算机科学与信息工程学院C语言程序设计竞赛圆满完成!...
- ios 高德挪动地图获取经纬度_高德地图获取地理位置经纬度并将经维度转化为详细地址信息...
- 吃鱼可以不挑刺了?华中农业大学发现鳊鱼肌间刺表达基因,可培育“无刺鱼”...
- R变量索引 - 什么时候使用 @或$
- 真正的出路只有一个(哈佛大学的幸福课)
- matlab求感知距离的命令,感知机算法(MATLAB)
- jmeter mysql驱动jar包_用 Jmeter 做 Web 接口测试
- 1.4编程基础之逻辑表达式与条件分支 03 奇偶数判断
- STM32H743+CubeMX-ADC(16bit分辨率)+DMA采样三路模拟量(并行),没过采样。