您的位置:首页 > 科技 > 能源 > 天津网站优化指导_温州快速网站建设排名_厦门网站快速排名优化_温州网站优化推广方案

天津网站优化指导_温州快速网站建设排名_厦门网站快速排名优化_温州网站优化推广方案

2025/9/27 1:01:20 来源:https://blog.csdn.net/JK01WYX/article/details/146543871  浏览:    关键词:天津网站优化指导_温州快速网站建设排名_厦门网站快速排名优化_温州网站优化推广方案
天津网站优化指导_温州快速网站建设排名_厦门网站快速排名优化_温州网站优化推广方案

学过计系肯定了解 寄存器、程序计数器、堆栈这些 程序运行需要的资源。 这些是进程地址空间
而操作系统分配一个进程资源时,分配的是 PCB 进程控制块
所以进程控制块还维护其他资源——程序与外部交互的资源——文件、管道、套接字。

文章目录

    • 文件描述符
    • 进程管理
    • exec() 之后文件描述符的情况

文件描述符

文件描述符(File Descriptor, FD)是由操作系统管理的资源,并不会存储在用户进程的地址空间,而是由内核维护,并在进程控制块(PCB)中记录。

用户态的进程只能通过 fd(整数)间接访问文件,无法直接访问内核中的文件数据。

进程管理

┌───────────────────┐
│  进程控制块(PCB) │
│ ┌───────────────┐ │
│ │  文件描述符表  │ │   <--- 用户进程访问的 `fd` 存在这里
│ │  (fd 0 -> stdin) │
│ │  (fd 1 -> stdout) │
│ │  (fd 2 -> stderr) │
│ │  (fd 3 -> socket) │
│ └───────────────┘ │
└───────────────────┘
┌───────────────────────┐
│  文件描述符表【进程私有】│
│  fd 3 -> 指向打开文件表 │
└───────────────────────┘↓
┌───────────────────┐
│  打开文件表【系统共享】│
│  记录文件偏移量、模式  │
└───────────────────┘↓
┌───────────────────┐
│   VFS【文件系统】  │
│   指向具体文件数据 │
└───────────────────┘

exec() 之后文件描述符的情况

exec() 不会 清空进程的文件描述符表(除非 FD_CLOEXEC 标志被设置)。

fcntl(pipefd[1], F_SETFD, FD_CLOEXEC);  // 让写端在 exec() 后自动关闭可以设置这个标志位
其实就是 close after exec ~

文件描述符仍然指向原来的打开文件表和 VFS 层的文件对象,因此 exec() 后仍可使用继承的 fd(如管道、套接字)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com