[英]What does 0 flag mean in shmflg for shared V memory system calls?
int shmget(key_t key, size_t size, int shmflg);
以上功能是根據man shmget給出的。 可用於第三個參數的標志已在man中給出,並且定義明確。 但是我不時看到有人使用0傳遞給該標志。 0是什么意思? 我在網上都找不到0的含義。
shmflg
的格式如下:
11 10 9 8 0 : bits
---------------------------------------------------------
| additional flags | IPC_EXCL | IPC_CREAT | mode flags |
---------------------------------------------------------
模式標志的解釋方式與open
系統調用的flags
參數相同。 模式標志的值為零表示O_RDONLY
。
位9和10的值應解釋如下:
00:使用與鍵關聯的現有段。 如果不存在,則返回錯誤ENOENT
。
01:如果與鍵關聯的段不存在,則創建一個新段。 否則,請使用現有段。
10: 我認為這與00相同(可以確認嗎?)。
11:如果與鍵關聯的段不存在,則創建一個新段。 否則,返回錯誤EEXIST
。
當然,只有在當前用戶具有所需權限的情況下,才能訪問現有段。
附加標志的值為零表示正常段(沒有SHM_HUGETLB
或其他此類標志)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.