這是從高級編程Liniux的提取物:共享內存和處理Sempahores(IPC)
信號量繼續使用它們已經終止的所有過程後,即使存在。 使用信號量集合的最後一個過程必須明確地將其刪除,以確保操作系統沒有用完信號量。爲此,請調用帶有 信號量標識符的semctl,集合中信號量的數量,IPC_RMID作爲第三個參數 和任何聯合semun值作爲第四個參數(忽略)。調用進程的有效用戶ID必須與信號量的分配器 (或者調用者必須是root)相匹配。與共享內存段不同,刪除信號集 集會導致Linux立即釋放。
如果一個進程分配共享內存,許多過程中使用它,從來沒有將其刪除(帶了shmctl),如果他們全部結束,然後共享網頁繼續可用。 (我們可以看到這與ipcs)。
如果某個進程執行了shmctl,那麼當最後一個進程解除關聯時,系統將釋放共享內存。
到目前爲止這麼好(我想,如果不是,請糾正我)。
我不知道從那個報價我不明白,首先它說: 「即使在使用它們的所有進程已終止後,信號量仍然存在。」 然後: 「與共享內存段不同,刪除信號集會導致Linux立即釋放。」
大。我現在知道了。 謝謝。 – fsdfa 2010-04-30 00:34:36