Exec 之后文件描述特点|学习笔记

简介: 快速学习 Exec 之后文件描述特点

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频Exec 之后文件描述特点】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11033


Exec 之后文件描述特点

 

内容介绍;

一、exec 前后文件描述符的特点

二、设置 close_on_exec 标志位的方法

 

 

一、exec 前后文件描述符的特点

每一个进程都会有文件描述符的表。exec 会将当前的进程替换,文件描述符中的表是否可用?

close_on_exec 标志决定了文件描述符在执行exec后文件描述符是否可用。

文件描述符的 close_on_exec 标志默认是关闭的,即文件描述符在执行exec后文件描述符是可用的.

例如:

在程序中打开文件为 test.txt

int main()

{

Int fd1;

fd1 = open(“test.txt”,O_CREAT|RDWR,S_IRWXU);//3

excal(“aaa”,”aaa”,NULL);//3默认代表test.txt

}

若没有设置 close_on_exec 标志位,进程中打开的文件描述符,及其相关的设置在exec 后不变,可供新启动的程序使用。

将 close_on_exec 打开则不可用3。

 

二、设置 close_on_exec 标志位的方法

int flags;//定义变量

flags = fcntl(fd, F_GETFD);//获得标志

flags |= FD_CLOEXEC;//打开标志位

flags &= ~FD_CLOEXEC;//关闭标志位

打开标志位与关闭标志位任选其一,如果设置为关闭标志位,exec 之后,表中文件描述符依然可用。

如果设置打开标志位,exec 之后的程序不能用于原来的进程。

fcntl(fd, F_SETFD,flags);//设置标志

相关文章
|
2月前
|
Shell Docker 容器
使用exec模式与shell模式,执行ENTRYPOINT和CMD的区别
结合 `exec`与 `shell`模式,`ENTRYPOINT`与 `CMD`在Docker容器启动时的交互方式展现出不同的特点。选择哪种模式,取决于对执行环境的纯净度、性能需求以及是否需要利用shell特性。理解这些细微差别,有助于更精细地控制容器的行为,优化应用部署与管理流程。
93 0
|
Shell C++
C++中的exec()函数
exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前进程的代码和数据,创建新的进程运行其他程序。exec()函数有多个版本,例如execl、execv、execle、execve等,根据不同的参数类型和个数来使用。
178 0
shell脚本之---根据PID查看所有信息
shell脚本之---根据PID查看所有信息
|
Java 应用服务中间件 Linux
Docker file 案例-CMD-ENTRYPOINT 命令案例 | 学习笔记
快速学习 Docker file 案例-CMD-ENTRYPOINT 命令案例
Docker file 案例-CMD-ENTRYPOINT 命令案例 | 学习笔记
|
Shell Linux Go
在 Go 语言中使用 exec 包执行 Shell 命令(上)
exec 是 os 包中的一个子包,它可用于使用 Go 运行外部命令。Go exec 命令教程展示了如何在 Golang 中执行 shell 命令和程序。
|
Shell Go
在 Go 语言中使用 exec 包执行 Shell 命令(下)
exec 是 os 包中的一个子包,它可用于使用 Go 运行外部命令。Go exec 命令教程展示了如何在 Golang 中执行 shell 命令和程序。
|
测试技术
Cypress系列(96)- exec() 命令详解
Cypress系列(96)- exec() 命令详解
218 0
Cypress系列(96)- exec() 命令详解
|
Shell
Shell脚本day4~文件包含/cat命令/ read命令/printf命令使用/函数
Shell脚本day4~文件包含/cat命令/ read命令/printf命令使用/函数
453 0
下一篇
无影云桌面