为什么共享内存已经存在,使用shmget()返回-1?但手工删除0x5005共享内存后,连续运行多个book调用共享内存又很正常。
来源:2-13 -1 进程的心跳机制

慕先生9503595
2023-03-26
在运行book程序时,一直报错。但用 ipcrm -m 0x5005 手工删除0x5005共享内存后,连续运行多个book调用共享内存又很正常。
错误:
./book aaa
shmget(5005) failed.
代码:
// 获取或创建共享共存。
int m_shmid;
if ( (m_shmid=shmget(SHMKEYP_,MAXNUMP_*sizeof(struct st_pinfo),0640|IPC_CREAT))==-1 )
{ printf(“shmget(%x) failed.\n”,SHMKEYP_); return -1; }
// 共享内存创建后,系统会自己对它进行初始化。
写回答
1回答
-
长歌_吴从周
2023-03-27
你可以用perror()把系统错误显示出来。
00
相似问题