关于FD_CLOEXEC标志

2024-02-13 07:18
文章标签 标志 fd cloexec

本文主要是介绍关于FD_CLOEXEC标志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FD_CLOEXEC用来设置文件的close-on-exec状态标准。在exec()调用后,close-on-exec标志为0的情况,
此文件不被关闭。非零则在exec()后被关闭。默认close-on-exec状态为0,需要通过FD_CLOEXEC设置。
#include <stdio.h>

#include <unistd.h>
#include <fcntl.h>

extern char **environ;

int main(int argc,char *argv[])
{
int flag;
int ret;

flag = fcntl(1,F_GETFD,0);
printf("close-on-exec is %d\n",flag);

fcntl(1,F_SETFD,flag|FD_CLOEXEC);
flag = fcntl(1,F_GETFD,0);
printf("close-on-exec is %d\n",flag);

//system("ls -l");
ret = execve("/bin/ls",argv,environ);
if(ret == -1)
{
printf("FAULT!\n");
}
printf("AH!!!!!\n");
return 0;
}

系统调用exec族是用来执行一个可执行文件来代替当前进程的执行映像。需要注意的是,该调用并没有生成

新的进 程,而是在原有进程的基础上,替换原有进程的正文,调用前后是同一个进程,进程号PID不变。

但执行的程序变了(执行的指令序列改变了)。因其在执行可执行文件的时候,

在可执行文件结束有运行return 0,所以就不会再执行下边的printf("AH!!!!!\n");

加上FD_CLOEXEC后是关闭文件描述符1,也就是标准输出1,所以ls运行的结果不会显示出来了。

不加FD_CLOEXEC就会打印出ls的运行结果。

这篇关于关于FD_CLOEXEC标志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/704852

相关文章

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

COCO Kepoints 标志位

COCO 数据集中annotations字段keypoints是一个长度为3*k的数组,其中k是category中keypoints的总数量。每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y坐标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见

Android中使用eBPF跟踪 FD打开与关闭

我们知道在Android系统中 fd 泄露,可以通过 google 开发的 fdtrack来进行排查,但是有些情况下我们想在外发release版本去监控fd泄露情况,fdtrack就不能很好的满足需求了。可以用eBPF去监控fd泄露。 Android中使用eBPF跟踪 FD打开与关闭

Detection简记2-DAFE-FD: Density Aware Feature Enrichment for Face Detection

创新点 1.使用密度估计模型增强检测中的特征图 总结 整个流程还是很清晰的。 conv1-3的特征图经过密度估计模块由检测器D1进行检测。 D2-4分别是四个检测器。 FFM是特征融合模块,将不同层不同大小的特征融合。 FFM网络结构如下: 首先使用1X1的卷积减少两组特征的厚度到128,然后使用双线性插值统一两组特征图的尺寸,然后相加。类似于cvpr2017的SSH。 多尺度检测器的网

【软件逆向】第38课,软件逆向安全工程师之操作标志寄存器实例,每天5分钟学习逆向吧!

在这些实例学习中,我们使用汇编指令来操作标志寄存器,并根据标志寄存器的状态进行条件分支。这些操作对于编写高效的汇编程序以及理解程序的行为至关重要 实例 1:使用 PUSHF 和 POPF 保存和恢复标志寄存器状态 section .text global _start _start: ; 初始化 AL 寄存器 MOV AL, 0xFF ; 对 AL 寄存器进行加一操作,这将导致 AL 寄存器的

GNU/Linux - Open函数使用的O_CLOEXEC flag

在 Linux 中,“O_CLOEXEC ”标志与 “open ”系统调用一起使用,用于指定在使用 “exec ”系列函数(如 “execve”、“execl ”等)执行新程序时,“open ”返回的文件描述符应自动关闭。 In Linux, the `O_CLOEXEC` flag is used with the `open` system call to specify that

文件 fd

目录 1. 建立共识原理2. 回忆 C 文件接口2.1 当前工作路径2.2 w / a 方式写入2.3 默认打开的三个文件流 3. 认识文件系统调用3.1 O_WRONLY|O_CREAT 写时创建3.2 O_TRUNC 截断长度(也即全覆盖式写入)3.3 O_APPEND 追加 4. 浅谈文件访问的本质4.1 简证 1. 建立共识原理 文件 = 内容 + 属性文件分为两种:打

虹科技术|全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CAN和CAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN FD的PCAN硬件产品,都能在我们的新驱动下“驰骋自如”。想要体验字符模式设备驱动接口(chardev)的便捷,还是SocketCAN设备驱动接口(netdev)的高效?都由您说了算! 新版本驱动包概览 1、设备驱动程序模块源代码及Makefil

Linux | 文件描述符fd详解及重定向技术的应用

多谢梅花,伴我微吟。 - 《高阳台·除夜》(韩疁) 2024.8.23 目录 1、文件描述符fd 文件操作符概念(简单带过) 重点:如何理解文件操作符使得系统实现了设备无关性?(使得操作系统无需关心具体的硬件细节) 示例代码:标准输入、标准输出和标准错误 文件描述符的分配规则 注意 2、重定向 重定向的简单例子 思考 重点:使用dup2函数进行重定向 重定向的重要应用 文件描述符,一个看似

Linux文件操作:文件描述符fd

文章目录 前言:回顾一下文件提炼一下关于文件的理解: 理解文件:通过系统调用操作文件:理解标志位传参:打开文件 open写入信息 write 理解文件描述符:对于open的返回值:==文件描述fd的本质是什么呢?== 如何理解Linux中一切皆文件?打通系统调用和C语言函数 前言: ​ 现在我们对进程的总体概念也有了了解,下面我们进入新的模块学习。关于Linux如何操作文件。其关