该函数就是我们平时调用socket函数时对应的底层函数,该函数首先创建一个socket结构体,该结构体是对tcp/ip或者uninx域协议的抽象,其中ops字段指向底层的操作函数集。
由上面的代码可以知道,socket函数主要是三个步骤,下面逐个分析。
1 拿到一个新的socket结构体
2 sock->ops->create,create函数对应的是inet_create
3 get_fd,经过上面的几个步骤,我们拿到了一个inode、一个socket、一个sock。最后我们要再拿到一个文件描述符返回给应用层,在操作系统中,每个进程有一个fd数组,记录进程打开的文件信息,数组的一个或多个项指向一个struct file结构体,一个或多个file结构体又指向一个inode结构体。所以我们拿到一个inode后,还需要拿到一个file结构,最后拿到一个fd结构,返回给用户。
最后,当我们指向一个socket函数时,内存视图是:
领取专属 10元无门槛券
私享最新 技术干货