我有代码
shmid = shmget(IPC_CREAT, size, IPC_CREAT|0666) ;
if ( shmid < 0 )
{
perror("get shm ipc_id error") ;
return -1 ;
}
shmaddr = (unsigned int*)shmat(shmid, 0, 0 ) ;
创建共享内存并做某事
在底部
shmdt( shmaddr ) ;
shmctl(shmid, IPC_RMID, NULL) ;
删除共享内存。
第一次执行该程序,它工作正常。
但是如果我第二次执行,它 printf
get shm ipc_id error: Invalid argument
我不知道为什么会这样?
我已经删除并分离了共享内存,为什么它仍然会发生?
以及如何预防?