socket描述符
一开始调用socket,要求定义socket类型,Internet协议族(PF_INET)和数据报socket
(SOCK_DGRAM)组成一个UDP协议socket。
socket函数返回值是一个描述符,它具有其他Unix描述符的所有特性:可以用这个描述符调用read和write;可以用dup复制它,在调用fork之后,父进程和子进程可以共享它,可以调用fcntl来改变它的属性,可以调用colse来关闭它,等等。在我们的例子中可以看到socket描述符是函数sendto和recvfrom的第一个参数。当程序终止时(偶那个过调用exit),所有打开的描述符,包括socket描述符都会被内核关闭。
我们现在介绍在进程调用socket时创建的数据结构,咋后面的几章中会更详细地描述这些数据结构。
首先从进程的进程表表项开始。在每个进程的生存期内都会有一个对应的进程表表项存在。
一个描述符是进城的进程表表项中的一个数组的下标。这个数组项指向一个打开文件表的结构。这个结构又指向一个描述此文件的i-node或v-node结构。
在这个图中,我们还显示了一个涉及socket的描述符。由于进程表表项是由以下C语言定义的,我们把记号proc{}放在进程表项的上面。
struct proc{
……
}