Provided by: manpages-cs_0.17.20080113-1_all bug

JMÉNO

       svipc - System V meziprocesový komunikační mechanismus

SYNTAXE

       # include <sys/types.h>
       # include <sys/ipc.h>
       # include <sys/msg.h>
       # include <sys/sem.h>
       # include <sys/shm.h>

POPIS

       Tato  manuálová  stránka popisuje implementaci System V meziprocesových
       komunikačních mechanismů  v  Linuxu:  fronty  zpráv,  sady  semaforů  a
       sdílenou  paměť.   V následujícím textu slovo resource znamená instanci
       jednoho z těchto mechanismů.

   Přístupová práva pro Resource
       Pro každé resource  používá  systém  společnou  strukturu  typu  struct
       ipc_perm  pro ukládání informací potřebných k určení práva na provedení
       ipc operace.  Struktura ipc_perm definovaná  v  systémovém  hlavičkovém
       souboru <sys/ipc.h>, obsahuje následující členy:

           struct ipc_perm {
               uid_t    cuid; /* uid toho, kdo objekt vytvořil */
               gid_t    cgid; /* gid toho, kdo objekt vytvořil */
               uid_t    uid;  /* uid vlastníka */
               gid_t    gid;  /* gid vlastníka */
               unsigned short mode;  /* práva pro čtení/zápis */
           };

       Člen  mode  ze  struktury  ipc_perm definuje ve svých spodních 9 bitech
       přístupová práva pro resource pro proces vykonávající systémové  voláni
       ipc takto:

           0400    Uživatel smí číst.
           0200    Uživatel smí zapisovat.
           0040    Skupina smí číst.
           0020    Skupina smí zapisovat.
           0004    Kdokoli smí číst.
           0002    Kdokoli smí zapisovat.

       Bity  0100,  0010  a  0001  (právo na spuštění) nejsou použity.  Navíc,
       "zápis" ve skutečnosti znamená "změnu" pro sadu semaforů.

       Tentýž  hlavičkový  soubor   definuje   také   následující   symbolické
       konstanty:

       IPC_CREAT     Vytvoř, neexistuje-li.

       IPC_EXCL      Ukonči chybou, existuje-li.

       IPC_NOWAIT    Způsobí chybu, má-li se čekat.

       IPC_PRIVATE   Privátní klíč.

       IPC_RMID      Vymaž resource.

       IPC_SET       Nastav parametry pro resource.

       IPC_STAT      Zjisti nastavení resource.

       Poznamenejme,  že  IPC_PRIVATE  je  typu key_t, zatímco všechny ostatní
       symbolické konstanty jsou vlajky, které lze logickým součtem kombinovat
       do proměnné typu int.

   Fronty zpráv
       Fronta  událostí  je  jednoznačně  identifikována  kladným celým číslem
       (jejím msqid) a má asociovanou datovou strukturu typu struct msquid_ds,
       definovanou v <sys/msg.h>, obsahující následující členy:

           struct msqid_ds {
               struct ipc_perm msg_perm;
               msgqnum_t       msg_qnum;   /*počet zpráv ve frontě */
               msglen_t        msg_qbytes; /*max počet bytů ve frontě */
               pid_t           msg_lspid;  /*PID posledního volání msgsnd(2) */
               pid_t           msg_lrpid;  /*PID posledního volání msgrcv(2) */
               time_t          msg_stime;  /*čas posledního volání msgsnd(2) */
               time_t          msg_rtime;  /*čas posledního volání msgrcv(2) */
               time_t          msg_ctime;  /*čas poslední změny */
           };

       Struktura  msg_perm  typu  ipc_perm  specifikuje  přístupová  práva pro
                  frontu událostí.

       msg_qnum   Počet zpráv ve frontě.

       msg_qbytes Maximální počet bytů ve zprávě pro tuto frontu.

       msg_lspid  ID  procesu,  který  poslední   vykonal   systémové   volání
                  msgsnd(2).

       msg_lrpid  ID   procesu,   který   poslední  vykonal  systémové  volání
                  msgrcv(2).

       msg_stime  Čas posledního volání systémové služby msgsnd(2).

       msg_rtime  Čas posledního volání systémové služby msgrcv(2).

       msg_ctime  Čas poslední volání systémové služby,  která  změnila  členy
                  struktury msqid_ds.

   Sady semaforů
       Sada semaforů je jednoznačně identifikována kladným celým číslem (jejím
       semid)  a  má  asociovanou  datovou  strukturu  typu  struct  semid_ds,
       definovanou v <sys/sem.h>, obsahující následující členy:

           struct semid_ds {
               struct ipc_perm sem_perm;
               time_t          sem_otime; /* čas poslední operace */
               time_t          sem_ctime; /* čas poslední změny */
               unsigned long   sem_nsems; /* počet semaforů v sadě */
           };

       Struktura  sem_perm typu ipc_perm specifikuje přístupová práva pro sadu
                  semaforů.

       sem_otime  Čas posledního volání systémové služby semop(2).

       sem_ctime  Čas posledního  volání  systémové  služby  semctl(2),  která
                  změnila   předchozí  strukturu  nebo  hodnotu  některého  ze
                  semaforů ze sady.

       sem_nsems  Počet semaforů  v  sadě.   Každý  semafor  je  identifikován
                  nezáporným číslem od 0 do sem_nsems-1.

       Semafor je datová struktura typu struct sem obsahující tyto členy:
           struct sem {
               int semval; /* hodnota semaforu */
               int sempid; /* PID poslední operace */
           }

       semval     Hodnota semaforu, nezáporné číslo.

       sempid     ID procesu, který naposledy měnil hodnotu tohoto semaforu.

   Segmenty sdílené paměti
       Segment  sdílené  paměti  je  jednoznačně  identifikován  kladným celým
       číslem (jeho shmid) a má  asociovanou  datovou  strukturu  typu  struct
       shmid_ds, definovanou v <sys/shm.h>, obsahující následující členy:

           struct shmid_ds {
               struct ipc_perm shm_perm;
               size_t          shm_segsz;  /* velikost segmentu */
               pid_t           shm_cpid;   /* PID tvůrce segmentu */
               pid_t           shm_lpid;   /* PID, poslední operace */
               shmatt_t        shm_nattch; /* počet připojených */
               time_t          shm_atime;  /* čas posledního připojení */
               time_t          shm_dtime;  /* čas posledního odpojení */
               time_t          shm_ctime;  /* čas poslední změny */
           };

       Struktura  shm_perm  typu  ipc_perm  specifikuje  přístupová  práva pro
                  segment sdílené paměti.

       shm_segsz  Velikost segmentu v bytech.

       shm_cpid   ID procesu, který tento segment vytvořil.

       shm_lpid   ID procesu, který naposledy volal systémovou službu shmat(2)
                  nebo shmdt(2).

       shm_nattch Počet připojených procesů.

       shm_atime  Čas posledního volání systémové služby shmat(2).

       shm_dtime  Čas posledního volání systémové služby shmdt(2).

       shm_ctime  Čas  posledního  volání  systémové  služby  shmctl(2), která
                  změnila hodnotu shmid_ds.

DALŠÍ INFORMACE

       ipc(2),  msgctl(2),   msgget(2),   msgrcv(2),   msgsnd(2),   semctl(2),
       semget(2), semop(2), shmat(2), shmctl(2), shmdt(2), shmget(2), ftok(3)

TIRÁŽ

       Tato  stránka  je  součástí projektu Linux man-pages.  Popis projektu a
       informace o  hlášení  chyb  najdete  na  http://www.kernel.org/doc/man-
       pages/.