-
直接转换方法将文件描述符-数据流图转化为模块结构图
资源介绍
15.3 传送文件描述符
在进程间传送打开文件描述符的能力非常有用。用此可以对客户机 /服务器应用进行不同
的设计。它允许一个进程(一般是服务器)处理与打开一个文件有关的所有操作(涉及的细节
可能是:将网络名翻译为网络地址、拨号调制解调器、协商文件锁等。)以及向调用进程返回
一描述符,该描述符可被用于以后的所有 I / O函数。打开文件或设备的所有细节对客户而言都
是透明的。
4 . 2 B S D支持传送打开描述符,但其实施中有些错误。4 . 3 B S D排除了这些错误。
S V R 3 . 2及以上版本都支持传送打开描述符。
下面进一步说明“从一个进程向另一个进程传送一打开文件描述符”的含义。回忆图 3 - 2,
其中显示了两个进程,它们打开了同一文件。虽然它们共享同一 v节点表,但每个进程都有它
自己的文件表项。
当从一个进程向另一个进程传送一打开文件描述符时,我们想要发送进程和接收进程共享
同一文件表项。图1 5 - 4显示了所希望的安排。在技术上,发送进程实际上向接受进程传送一个
指向一打开文件表项的指针。该指针被分配存放在接收进程的第一个可用描述符项中。(注意,
不要得到错觉以为发送进程和接收进程中的描述符编号是相同的,通常它们是不同的。)这种
情况与在f o r k之后,父、子进程完全共享一个打开文件表项相同(见图 8 - 1)。
当发送进程将描述符传送给接收进程后,通常它关闭该描述符。发送进程关闭该描述符并
不造成关闭该文件或设备,其原因是该描述符对应的文件仍需为接收进程打开(即使接收进程
尚未接收到该描述符)。
图15-4 从上一进程传送一个打开文件至下一进程
3 5 8 U N I X环境高级编程
进程表项
f d标志 p t r
进程表项
f d标志 p t r
文件表
文件状态标志
当前文件位移
v节点指针
v节点表
v节点信息
i节点信息
当前文件长度