Linux有名信號量的創建(sem_open中name參數構造)【轉】


轉自:http://blog.csdn.net/gfeng168/article/details/40740865

一、sem_open函數name參數的構造


Linux的有名信號量的創建是通過調用sem_open函數創建的,函數原型如下:


我剛開始用以為是想一般的指定一個路徑名給sem_open中的name參數就可以了,可是我使用“/tmp/sharesem"給name參數確總是返回

no such file or diratory 的錯誤。我$ man 3 sem_open了下,如上圖。發現name參數的構造的詳細介紹需要sem_overview(7) 中。(看到這我就可能是像消息隊列類似了)

我$ man 7 sem_overview

得到下面的描述


很明顯,name參數的構造是以  “ / ” 號開頭,后面跟的字符串不能再有 “ / ” 號,長度小於NAME_MAX - 4。


所以說我設置name參數為“/tmp/sharesem"所錯誤的。


二、linux有名信號量的存儲

有名信號量是隨內核持續的,所以如果如果我們不調用sem_unlink來刪除它,它將一直存在,直到內核重啟。

那有名信號量保存在哪里呢?

實時上,跟消息隊列類似,它保存在 /dev/shm 這個目錄中。你可以在這個目錄中找到你創建了的,但是沒有調用sem_unlink的信號量。

由此可見有名信號量的實現是以共享內存區實現的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM