#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <sys/sem.h> #include <sys/shm.h>
struct ipc_perm {
    uid_t          cuid;   /* 作成者のユーザーID */
    gid_t          cgid;   /* 作成者のグループID */
    uid_t          uid;    /* 所有者のユーザーID */
    gid_t          gid;    /* 所有者のグループID */
    unsigned short mode;   /* 読み書きの許可 */
};
ipc_perm 構造体の mode メンバーは以下の 9 ビットで、プロセスの IPC システム・コール による資源へのアクセス許可を定義する。 許可は以下のように解釈される:
    0400    ユーザーによる読み込み。
    0200    ユーザーによる書き込み。
    0040    グループによる読み込み。
    0020    グループによる書き込み。
    0004    他人による読み込み。
    0002    他人による書き込み。
システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマフォーの場合には "書き込み(write)" は実際には "変更(alter)" を意味する。
同じヘッダーファイルには以下のシンボルの定義が含まれている:
IPC_PRIVATE は key_t 型である。その他の全てのシンボルはフラグ・フィールドとして int 変数に OR 演算で格納することができる。
struct msqid_ds {
    struct ipc_perm msg_perm;
    msgqnum_t       msg_qnum;    /* キューにあるメッセージの数 */
    msglen_t        msg_qbytes;  /* キューの最大バイト数 */
    pid_t           msg_lspid;   /* 最後に msgsnd(2) をした PID */
    pid_t           msg_lrpid;   /* 最後に msgrcv(2) をした PID */
    time_t          msg_stime;   /* 最後に msgsnd(2) をした時間 */
    time_t          msg_rtime;   /* 最後に msgrcv(2) をした時間 */
    time_t          msg_ctime;   /* 最後に変更された時間 */
};
struct semid_ds {
    struct ipc_perm sem_perm;
    time_t          sem_otime;   /* 最後に操作した時間 */
    time_t          sem_ctime;   /* 最後に変更した時間 */
    unsigned long   sem_nsems;   /* 集合の中にあるセマフォー数 */
};
セマフォーは struct sem 型のデータ構造体であり、以下のメンバーを含んでいる:
struct sem {
    int semval;  /* セマフォーの値 */
    int sempid;  /* 最後に操作したプロセス ID */
};
struct shmid_ds {
    struct ipc_perm shm_perm;
    size_t          shm_segsz;   /* セグメントのサイズ */
    pid_t           shm_cpid;    /* 作成者のプロセス ID */
    pid_t           shm_lpid;    /* 最後に操作したプロセス ID */
    shmatt_t        shm_nattch;  /* 現在、付加している数 */
    time_t          shm_atime;   /* 最後に付加した時間 */
    time_t          shm_dtime;   /* 最後に分離した時間 */
    time_t          shm_ctime;   /* 最後に変更した時間 */
};