Provided by: manpages-cs_0.18.20090209-3_all bug

JMÉNO

       svipc - System V meziprocesový komunikační mechanismus

POUŽITÍ

       #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/.