软件考古学: O_CLOEXEC/FD_CLOEXEC
软件 FD
2023-09-14 09:13:13 时间
文章目录
概述
O_* O代表什么意思?open flag。打开标志位。O_CLOEXEC 这个意思是打开的一个标志位,在执行exec时,在新fork的程序里需要关闭此fd。
引入
https://github.com/torvalds/linux/commit/f23513e8d96cf5e6cf8d2ff0cb5dd6bbc33995e4
上面这个commit 引入了这个标志位;为了处理一个问题:在多线程的程序(更精确的说法,所有使用了带有CLONE_FILES的clone函数的程序)下存在运行先后问题:
线程 #1 线程 #2
fd=open() 线程1 打开一个文件
fork + exec // 线程而执行一个fork/exec
fcntl(fd,F_SETFD,FD_CLOEXEC) 线程1设置标志位,此时已经晚了,最终导致fork/exec出来的进程还有线程1打开的文件,可能导致敏感文件描述符泄露。
In some applications this can happen frequently. Take a web browser. One thread opens a file and another thread starts,
相关文章
- 倒计时软件有哪些?在便签上就可以设置倒计时天数
- Atitit it业界与软件界的定律 原则 准则 法则 效应
- 人工智能时代:软件中的人工智能将如何改变程序员的角色
- 现场直播计分识别软件Crack:Scoreboard OCR
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines——2.5 Different forms of ML workfl》解读
- 软件“生命”系统进化论——软件以负熵为生!
- 傅里叶周期分析软件专业版
- 软件自动化测试的设计标准
- proteus仿真软件中芯片的命名规则与封装方法(详细版)
- 第十四届蓝桥杯大赛软件赛省赛(C/C++B组)
- CentOS6安装大数据软件(八):Spark集群安装和部署