之前有一篇關於共享內存的System V和Posix的對比:
http://www.cnblogs.com/charlesblc/p/6261469.html
POSIX(Portable Operating System Interface)可移植操作系統接口,這樣的簡寫完全是為了和UNIX讀起來更像而已。
IEEE開發了POSIX,在源碼級別定義了一組UNIX操作系統接口。
Glibc(GNU C Library),即C運行庫,是Linux系統中最底層的API,它就是完全按照POSIX標准編寫的。
System V(System Five),是Unix操作系統眾多版本中的一支,就是當年UNIX廠家混戰中,比較強大的一個諸侯王,最初由 AT&T 開發,在1983年第一次發布。
這里要感謝POSIX這樣標准化的努力,是它兼容了絕大部分System V的規格,減少了各類操作系統之間移植的麻煩。
Posix和SystemV的IPC庫有幾點區別(我總結的)
1. Posix函數有下划線分隔,SystemV函數沒有,是連在一起的;
2. Posix 每個IPC對象是有名稱的,而且名稱是一個很重要的概念。mq_open sem_open shm_open三個函數的第一個參數就是這個名稱,這個名稱不一定是在文件系統中存在的名稱。 要使用IPC對象,需要創建或者打開,這與文件操作類似,主要是使用mq_open、sem_open、shm_open 函數操作。在創建或者打開ipc對象時需要指定操作的mode,例如O_RONLY、O_WRONLY、O_RDWR、O_CREAT、O_EXCL 等,IPC對象是有一定權限的,與文件的權限類似。
對應的,SystemV每個IPC有一個重要的類型是key_t,在msgget、semget、shmget函數操作中都需要利用這個類型是參數。系統中對每個ipc對象都會有一個結構體來標識