系统初始化共享内存的时机?

来源:2-13 -1 进程的心跳机制

qq_慕运维4167369

2022-03-20

//创建/获取共享内存,大小为n*sizeof(struct st_pinfo)
int m_shmid = 0;
if((m_shmid=shmget(SHMKEYP_,MAXNUMP_*sizeof(struct st_pinfo),0640|IPC_CREAT))==-1)      
{printf("shmget(%x) failed.\n",SHMKEYP_);  return -1;}

//将共享内存连接到当前进程的地址空间
struct st_pinfo *m_shm;
m_shm=(struct st_pinfo *)shmat(m_shmid,0,0);  

系统对共享内存初始化是在shmget(SHMKEYP_,MAXNUMP_*sizeof(struct st_pinfo),0640|IPC_CREAT)时还是在shmat(m_shmid,0,0);时?请详细说明一下理由,谢谢。

写回答

1回答

长歌_吴从周

2022-03-20

当然是shmget,shmget是创建并获取共享内存,shmat只是连接地址空间,意义完全不一样。

0
0

C/C++气象数据中心实战,手把手教你做工业级项目

通过技术的实际应用,掌握等同2年经验的技术能力

968 学习 · 401 问题

查看课程