創建或打開一個IPC對象的三個getXXX函數的第一個參數key是類型為key_t的IPC鍵,返回值identifier是一個整數標識符。該標識符不同于ftok函數的id參數。對于key值,應用程序有兩種選擇。
(1)調用ftok,給它傳遞pathname和id。
(2)指定key為IPC_PRIVATE,這將保證創建一個新的,唯一的IPC對象。開源指令集?
key_t ftok(const char *pathname, int proj_id);
所有三個getXXX函數都有一個名為oflag的參數,它指定IPC對象的讀寫權限位(ipc_perm結構的mode成員),并選擇是創建一個新的IPC對象還是訪問一個已存在的IPC對象。這種選擇的規則如下。
(1)指定key為IPC_PRIVATE能保證創建一個唯一的IPC對象。沒有一對id和pathname的組合會導致ftok產生IPC_PRIVATE這個鍵值。
(2)設置oflag參數的IPC_CREAT位但不設置它的IPC_EXCL位時,如果所指定鍵的IPC對象不存在,那就創建一個新的對象,否則返回該對象。ipc工程模式。
(3)同時設置oflag的 IPC_CREAT和IPC_EXCL位時,如果所指定鍵的IPC對象不存在,那就創建一個新的對象,否則返回一個EEXIST錯誤,因為該對象已存在。
??? 設置IPC_EXCL位但不設置IPC_CREAT位時沒有意義的。