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);//设置标志

相关文章
|
3天前
|
Unix Docker 容器
使用docker 启动naocs 报错出现:standard_init_linux.go:241: exec user process caused "exec format error"
```markdown Error in Docker container startup: "standard_init_linux.go:241: exec user process caused \"exec format error\"". Occurred at 2024-06-29 09:26:19.910, followed by a failed hook with a syslog delivery error at 09:27:20.193. Seeking solutions from experts. ```
|
Java 大数据 Shell
Azkaban--使用实战--shell、command 调度 | 学习笔记
快速学习 Azkaban--使用实战--shell、command 调度
757 0
Azkaban--使用实战--shell、command 调度 | 学习笔记
|
Shell C++
C++中的exec()函数
exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前进程的代码和数据,创建新的进程运行其他程序。exec()函数有多个版本,例如execl、execv、execle、execve等,根据不同的参数类型和个数来使用。
145 0
|
Unix Shell Go
使用 os/exec 执行命令 | 青训营笔记
使用 os/exec 执行命令 | 青训营笔记
131 0
|
Java 应用服务中间件 Linux
Docker file 案例-CMD-ENTRYPOINT 命令案例 | 学习笔记
快速学习 Docker file 案例-CMD-ENTRYPOINT 命令案例
182 0
Docker file 案例-CMD-ENTRYPOINT 命令案例 | 学习笔记
|
测试技术
Cypress系列(96)- exec() 命令详解
Cypress系列(96)- exec() 命令详解
193 0
Cypress系列(96)- exec() 命令详解
|
Linux Shell Windows