【发布时间】:2013-11-05 09:35:33
【问题描述】:
我有密码
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
我不知道为什么会这样?
我已经删除并分离了共享内存,为什么还会出现这种情况?
以及如何预防?
【问题讨论】:
-
请注意,密钥无效(
shmget的第一个参数)。您可能想使用IPC_PRIVATE。见manpage。
标签: c linux shared-memory