私はコードを持っています
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) ;
共有メモリを削除します。
プログラムを初めて実行すると、正常に動作します。
しかし、2回目に実行すると、printf
get shm ipc_id error: Invalid argument
なぜそれが起こるのか分かりませんか?
共有メモリを削除してデタッチしましたが、なぜまだ発生するのですか?
そして、それを防ぐ方法は?