一般代碼如下:
key = 1234;
m_nShmId = shmget(key, 1024, 0666|IPC_CREAT);
if (m_nShmId == -1)
{
GH_LOG_ERROR("shmget() FAILED!");
return false;
}
有人奇怪了,這語句是多麼的正确,為什麼一直錯誤呢?原因就是,這個key已經存在,而且大小跟指定不一緻.
怎麼辦?最簡單辦法,直接重新開機機器即可.從程式來講,還是先删除,再産生:
key = 1234;
//注意是大小0
m_nShmId = shmget(key, 0, 0);
if (m_nShmId != -1)
{
shmctl(m_nShmId, IPC_RMID, 0);
}
m_nShmId = shmget(key, 1024, 0666|IPC_CREAT);
if (m_nShmId == -1)
{
GH_LOG_ERROR("shmget FAILED!");
return false;
}