0
我的程序使用系統msgqueue IPC的。我的代碼:爲什麼每次os重新啓動時都會自動構建msgqueue?
key = 0x0000ed79;
if((id=msgget(key,0666|IPC_CREAT)) <= 0)
return false ;
else return true
的問題是:在每次機器重新啓動時
- ,有msgqueue自動使用相同的密鑰,但內置了ID爲0,所以我必須ipcrm它;
爲什麼我不能使用ID爲0的msgqueue?這裏是男人頁面內msgget API的返回值的描述,似乎爲0的ID是不是不正確的:
如果成功,返回值將是消息隊列標識符(非負整數)否則-1,並將errno指示錯誤
msgQs是內核持久性的,並且在重新啓動後不能存活。這裏還有別的事情要做。 – Duck
msgget可能返回隊列ID爲0,沒有什麼特別的。msgget在失敗時返回-1。 (但是,如果您在重新啓動之後取回隊列標識,而您沒有自己創建隊列標識,則可能是您的密鑰與其他進程衝突) – nos
@ nos.how找到哪個進程使用相同的密鑰創建隊列?tks – basketballnewbie