开发者学堂课程【物联网开发- 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)
;//设置标志