先說POSIX的吧:
mq_open,sem_open,shm_open著三個函數用于創建或者打開一個IPC通道。
?
?
由此可見,消息隊列的讀寫權限是任意的,然而信號燈就沒有,實際上,信號燈都需要讀和寫權限罷了。共享內存不能只以只寫方式打開,否則不能往共享內存中寫數據的。
在創建一個新的消息隊列或者信號燈或者共享內存的時候,可能需要mode_t權限標志:
S_IRUSER 用戶讀?? S_IWUSER 用戶寫? S_IRGRP 用戶組讀 S_IWGRP 用戶組寫? S_IROTH 其他用戶讀??? S_IWOTH 其他用戶寫
其中所指定的文件權限位受當前進程文件模式創建掩碼,但我們可以通過umask()修正。
這里注意的是O_NONBLOCK標志,該標志使得一個消息隊列在隊列為空的時候讀或消息隊列填滿是寫被阻塞,O_TRUNKC標志,如果以讀寫模式打開一個已存在的共享內存去對象那么該標志將使得該對象的長度被結成0.
???????????????????? 本圖是顯示創建IPC通道的一般邏輯和思路。
?
?2,SYSTEM V的方法:
?
?
?
?
?
?
?
?
?
?