Unix 系统中描述符传递与线程管理技术解析
在 Unix 系统的开发中,我们常常会遇到进程间传递描述符以及线程管理的问题。下面将深入探讨描述符传递和 door-server-create 函数相关的技术要点。
1. 描述符传递基础
在进程间传递打开的描述符,常见的情况有两种:一是子进程在 fork 调用后与父进程共享所有打开的描述符;二是在执行 exec 时,所有描述符通常保持打开状态。
例如,一个进程先打开一个描述符,然后调用 fork ,接着父进程关闭该描述符,让子进程处理该描述符,这样就实现了从父进程到子进程的描述符传递。
当前的 Unix 系统扩展了描述符传递的概念,允许在任意相关或不相关的进程之间传递任何打开的描述符。“门(Doors)” 提供了一种 API,可用于在客户端和服务器之间传递描述符。
不同的内核采用不同的技术来传递描述符:
- Berkeley 派生的内核使用 Unix 域套接字传递描述符。
- SVR4 内核使用 I - SENDFD 和 I - RECVFD ioctl 命令传递描述符,不过 SVR4 进程仍可通过 Unix 域套接字使用该内核特性。
2. 描述符传递的原理
要理解描述符传递的含义,我们来看一个例子。假设服务器打开一个文件,如果将整个文件通过管道复制给客户端,若文件大小为 1 兆字节,那么就会有 1 兆字节的数据通过管道从服务
超级会员免费看
订阅专栏 解锁全文
1491

被折叠的 条评论
为什么被折叠?



