话不多说,先上图。从这里可以看出在内核中,消息队列,共享内存和信号量这种ipc资源最开头的元素都是struct ipc_prem,在C语言中,结构体的地址和结构体首元素地址在数值上是相同的。
所以,每当我们申请一个ipc资源的时候,内核中会存在一个struct ipc_perm*类型的数组存储我们申请IPC资源的地址。
当我们想要获取ipc资源中struct ipc_perm内的资源,我们可以直接取用,当我们需要XXXid_ds内的资源,我们可以强转类型。
话不多说,先上图。从这里可以看出在内核中,消息队列,共享内存和信号量这种ipc资源最开头的元素都是struct ipc_prem,在C语言中,结构体的地址和结构体首元素地址在数值上是相同的。
所以,每当我们申请一个ipc资源的时候,内核中会存在一个struct ipc_perm*类型的数组存储我们申请IPC资源的地址。
当我们想要获取ipc资源中struct ipc_perm内的资源,我们可以直接取用,当我们需要XXXid_ds内的资源,我们可以强转类型。