Provided by: manpages-pl_20060617-4_all bug

NAZWA

       svipc - mechanizmy komunikacji midzy procesami w Systemie V

SK/LADNIA

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

OPIS

       Niniejsza  dokumentacja  stara  si  opisa implementacj w systemie Linux
       mechanizmow komunikacji midzy procesami Systemu V: kolejek komunikatow,
       semaforow  oraz  segmentow  pamici wspolnej. Dalej w tekcie slowo zas'ob
       oznacza egzemplarz/realizacj jednego z tych mechanizmow.

   Prawa dostpu do zasob'ow
       W przypadku kadego zasobu system  korzysta  z  ogolnej  struktury  typu
       struct  ipc_perm, w ktorej przechowuje informacje niezbdne do okrelenia
       uprawnie do  wykonania  operacji.  Struktura  ipc_perm  zdefiniowana  w
       systemowym pliku naglowkowym <sys/ipc.h> sklada si z nastpujcych pol:

            ushort cuid;    /* id uytkownika tworzcego */
            ushort cgid;    /* id grupy tworzcego */
            ushort uid;     /* id wlaciciela */
            ushort gid;     /* id grupy wlaciciela */
            ushort mode;    /* uprawnienia do odczytu/zapisu */

       Pole  mode  struktury  ipc_perm  w  swoich  najniszych dziewiciu bitach
       przechowuje  informacje  o  prawach  dostpu  do  zasobu   dla   procesu
       wywolujcego  funkcj systemow metod ipc.  Uprawnienia s interpretowane w
       sposob nastpujcy:

            0400 Prawo do odczytu przez uytkownika.
            0200 Prawo do zapisu przez uytkownika.
            0040 Prawo do odczytu przez grup.
            0020 Prawo do zapisu przez grup.
            0004 Prawo do odczytu przez innych.
            0002 Prawo do zapisu przez innych.

       Bity 0100, 0010 i 0001 (bity praw do uruchamiania) nie s  przez  system
       wykorzystywane.  Co  wicej,  w  przypadku  zestawu  semaforow  "zapisz"
       efektywnie oznacza "zmie".

       W tym samym systemowym pliku naglowkowym zawarta jest definicja stalych
       symbolicznych:

       IPC_CREAT     Utworzenie pozycji, gdy klucz nie istnieje.

       IPC_EXCL      Bld, gdy klucz istnieje.

       IPC_NOWAIT    Bld, gdy danie musi czeka.

       IPC_PRIVATE   Klucz prywatny.

       IPC_RMID      Usunicie zasobu.

       IPC_SET       Ustawienie opcji zasobu.

       IPC_STAT      Odczytanie opcji zasobu.

       Prosz zauway, e IPC_PRIVATE jest typu key_t podczas gdy pozostale stale
       s polami znacznikowymi, ktore mog by sumowane  bitowo  (OR)  do  jednej
       zmiennej typu int.

   Kolejki komunikat'ow
       Kolejka  komunikatow  jest  w  sposob jednoznaczny identyfikowana przez
       dodatni liczb calkowit (jej msqid)   oraz  posiada  skojarzon  struktur
       typu  struct  msquid_ds, ktora jest zdefiniowana w pliku <sys/msg.h>, a
       sklada si z nastpujcych pol:

            struct ipc_perm msg_perm;
            ushort msg_qnum;     /* liczba komunikatow w kolejce */
            ushort msg_qbytes;   /* maks. liczba bajtow w kolejce */
            ushort msg_lspid;    /* PID ostatnio wywolujcego msgsnd() */
            ushort msg_lrpid;    /* PID ostatnio wywolujcego msgrcv() */
            time_t msg_stime;    /* czas ostatniego msgsnd() */
            time_t msg_rtime;    /* czas ostatniego msgrcv() */
            time_t msg_ctime;    /* czas ostatniej zmiany */

       msg_perm   Struktura ipc_perm, ktora okrela  prawa  dostpu  do  kolejki
                  komunikatow.

       msg_qnum   Liczba komunikatow znajdujcych si aktualnie w kolejce.

       msg_qbytes Maksymalna  liczba  bajtow tekstu komunikatu, na jak pozwala
                  kolejka.

       msg_lspid  Identyfikator procesu, ktory ostatni wykonal funkcj systemow
                  msgsnd().

       msg_lrpid  identyfikator procesu, ktory ostatni wykonal funkcj systemow
                  msgrcv().

       msg_stime  Czas ostatniego wykonania funkcji systemowej msgsnd().

       msg_rtime  Czas ostatniego wykonania funkcji systemowej msgcv().

       msg_ctime  Czas  ostatniego  wywolania  funkcji  systemowej,  w  wyniku
                  ktorego zmienione zostalo pole struktury msqid_ds.

   Zestawy semafor'ow
       Semafor  jest jednoznacznie identyfikowany przez dodatni liczb calkowit
       (jego semid) i  jest  skojarzony  ze  struktur  typu  struct  semid_ds,
       zdefiniowan w pliku <sys/sem.h>, ktora sklada si z nastpujcych pol:

            struct ipc_perm sem_perm;
            time_t sem_otime;    /* czas ostatniej operacji */
            time_t sem_ctime;    /* czas ostatniej zmiany */
            ushort sem_nsems;    /* liczba semaforow w zestawie */

       sem_perm   Struktura  ipc_perm,  ktora  okrela  prawa dostpu do zestawu
                  semaforow.

       sem_otime  Czas ostatniego wywolania funkcji systemowej semop().

       sem_ctime  Czas ostatniego wywolania funkcji systemowej semctl(), ktora
                  zmienila element przedstawionej powyej struktury lub jeden z
                  semaforow nalecych do zestawu.

       sem_nsems  Liczba semaforow  w  zestawie.  Kady  semafor  zestawu  jest
                  identyfikowany  przez  dodatni liczb calkowit z zakresu od 0
                  do sem_nsems-1.

       Semafor jest struktur typu struct sem, ktora sklada  si  z  nastpujcych
       pol:

            ushort semval;  /* warto semafora */
            short sempid;   /* PID procesu ostatniej operacji */
            ushort semncnt;  /* liczba oczekujcych na zwikszenie semval */
            ushort semzcnt;  /* liczba oczekujcych na semval = 0 */

       semval     Warto semafora: nieujemna liczba calkowita.

       sempid     Identyfikator  ostatniego  procesu, ktory wykonal operacj na
                  tym semaforze.

       semncnt    Liczba  wstrzymanych  procesow  oczekujcych  na   zwikszenie
                  wartoci zmiennej semval.

       semznt     Liczba  wstrzymanych  procesow  oczekujcych a zmienna semval
                  przyjmie warto zero.

   Segmenty pamici wsp'olnej
       Segment pamici wspolnej jest jednoznacznie identyfikowany przez dodatni
       liczb  calkowit  (jego shmid) i jest skojarzony ze struktur typu struct
       shmid_ds, zdefiniowan w <sys/shm.h>, ktora sklada si z nastpujcych pol:

            struct ipc_perm shm_perm;
            int shm_segsz;       /* rozmiar segmentu */
            ushort shm_cpid;     /* PID procesu, ktory utworzyl segment */
            ushort shm_lpid;     /* PID ostatnio operujcego na segmencie */
            short shm_nattch;    /* liczba aktualnych przylcze */
            time_t shm_atime;    /* czas ostatniego przylczenia*/
            time_t shm_dtime;    /* czas ostatniego odlczenia*/
            time_t shm_ctime;    /* czas ostatniej zmiany */

       shm_perm   Struktura ipc_perm, ktora okrela prawa  dostpu  do  segmentu
                  pamici wspolnej.

       shm_segsz  Rozmiar segmentu pamici wspolnej w bajtach.

       shm_cpid   Identyfikator  procesu,  ktory  utworzyl  ten segment pamici
                  wspolnej.

       shm_lpid   Identyfikator procesu, ktory ostatni wykonal funkcj systemow
                  shmat() lub shmdt().

       shm_nattch Liczba  aktualnych,  aktywnych  przylcze  do  tego  segmentu
                  pamici wspolnej.

       shm_atime  Czas ostatniego wykonania funkcji systemowej shmat().

       shm_dtime  Czas ostatniego wykonania funkcji systemowej shmdt().

       shm_ctime  Czas ostatniego wykonania  funkcji  systemowej  shmctl(),  w
                  wyniku ktorego zmienione zostalo shmid_ds.

ZOBACZ TAKE

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

INFORMACJE O T/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju  Projektu  Tlumaczenia
       Manuali  i  moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
       opisem a rzeczywistym zachowaniem  opisywanego  programu  lub  funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.