sem_open出現段錯誤 名字問題

posix信號燈裏面的這個函數sem_open();這裏面的第一個參數一般情況下第一個字符爲'/'  而且後面的的字符串裏面不能在中間出現反斜槓,因爲這種有名信號燈的實現機制是依靠文件的方式來實現的.而反斜槓後面的爲這個自定義文件的名字(也算是信號量的名字) 而命名機制是不允許出現反斜槓的.  (但是可以是這樣,開頭處連續出現多個反斜槓比如'/////semfxp',這是因爲sem_open這個函數會檢查第一個字符如果第一個字符爲反斜槓則繼續檢查知道不出現反斜槓位置後面的即爲名字,而如果第一個不爲反斜槓,則它將默認爲是信號量的名字了就直接創建這個文件了,也就不會出現問題,但是害怕的是有的人會有這種寫法,'zhang/fxp', 假如說你寫一個這樣的名字,那麼系統會這樣做,它會去在目錄/dev/shm/下去找sem.zhang這個目錄,結果會發現失敗(之所以是sem.zhang是因爲在sem_open這個源函數裏面一般都添加一個sem.頭部.) 當然了 你也可以在程序裏面首先mkdir一個這樣的文件夾比如sem.zhang   (在/dev/shm/下) 這樣的話程序就不會出現問題了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章