Linux.pl
Opcje wyszukiwania podręcznika man:
Lista stron man zaczynających się od znaku:
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   ALPHA   NUM   OTHER   ALL
SVIPC(7)                Podręcznik programisty Linuksa                SVIPC(7)

NAZWA
       svipc - mechanizmy komunikacji między procesami w Systemie V

SKŁADNIA
       # 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
       mechanizmów komunikacji  między  procesami  Systemu  V:  kolejek  komu-
       nikatów,  semaforów  oraz  segmentów  pamięci wspólnej. Dalej w tekście
       słowo zasób oznacza egzemplarz/realizację jednego z tych mechanizmów.

   Prawa dostępu do zasobów
       W przypadku każdego zasobu system korzysta  z  ogólnej  struktury  typu
       struct   ipc_perm,   w   której  przechowuje  informacje  niezbędne  do
       określenia uprawnień do wykonania operacji. Struktura ipc_perm  zdefin-
       iowana   w  systemowym  pliku  nagłówkowym  <sys/ipc.h>  składa  się  z
       następujących pól:

            ushort cuid;    /* id użytkownika tworzącego */
            ushort cgid;    /* id grupy tworzącego */
            ushort uid;     /* id właściciela */
            ushort gid;     /* id grupy właściciela */
            ushort mode;    /* uprawnienia do odczytu/zapisu */

       Pole mode struktury ipc_perm w  swoich  najniższych  dziewięciu  bitach
       przechowuje   informacje  o  prawach  dostępu  do  zasobu  dla  procesu
       wywołującego funkcję systemową metod  ipc.   Uprawnienia  są  interpre-
       towane w sposób następujący:

            0400 Prawo do odczytu przez użytkownika.
            0200 Prawo do zapisu przez użytkownika.
            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 więcej, w przypadku zestawu semaforów "zapisz" efek-
       tywnie oznacza "zmień".

       W tym samym systemowym pliku nagłówkowym zawarta jest definicja stałych
       symbolicznych:

       IPC_CREAT     Utworzenie pozycji, gdy klucz nie istnieje.

       IPC_EXCL      Błąd, gdy klucz istnieje.

       IPC_NOWAIT    Błąd, gdy żądanie musi czekać.

       IPC_PRIVATE   Klucz prywatny.

       IPC_RMID      Usunięcie zasobu.

       IPC_SET       Ustawienie opcji zasobu.

       IPC_STAT      Odczytanie opcji zasobu.

       Proszę zauważyć, że IPC_PRIVATE jest typu key_t podczas  gdy  pozostałe
       stałe  są  polami znacznikowymi, które mogą być sumowane bitowo (OR) do
       jednej zmiennej typu int.

   Kolejki komunikatów
       Kolejka komunikatów jest w  sposób  jednoznaczny  identyfikowana  przez
       dodatnią  liczbę  całkowitą (jej msqid)  oraz posiada skojarzoną struk-
       turę  typu  struct  msquid_ds,  która   jest   zdefiniowana   w   pliku
       <sys/msg.h>, a składa się z następujących pól:

            struct ipc_perm msg_perm;
            ushort msg_qnum;     /* liczba komunikatów w kolejce */
            ushort msg_qbytes;   /* maks. liczba bajtów w kolejce */
            ushort msg_lspid;    /* PID ostatnio wywołującego msgsnd() */
            ushort msg_lrpid;    /* PID ostatnio wywołującego 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,  która określa prawa dostępu do kolejki
                  komunikatów.

       msg_qnum   Liczba komunikatów znajdujących się aktualnie w kolejce.

       msg_qbytes Maksymalna liczba bajtów tekstu komunikatu, na jaką  pozwala
                  kolejka.

       msg_lspid  Identyfikator  procesu, który ostatni wykonał funkcję syste-
                  mową msgsnd().

       msg_lrpid  identyfikator procesu, który ostatni wykonał funkcję  syste-
                  mową msgrcv().

       msg_stime  Czas ostatniego wykonania funkcji systemowej msgsnd().

       msg_rtime  Czas ostatniego wykonania funkcji systemowej msgcv().

       msg_ctime  Czas  ostatniego  wywołania  funkcji  systemowej,  w  wyniku
                  którego zmienione zostało pole struktury msqid_ds.

   Zestawy semaforów
       Semafor  jest  jednoznacznie  identyfikowany  przez   dodatnią   liczbę
       całkowitą  (jego  semid)  i  jest  skojarzony  ze strukturą typu struct
       semid_ds,  zdefiniowaną  w  pliku  <sys/sem.h>,  która  składa  się   z
       następujących pól:

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

       sem_perm   Struktura  ipc_perm,  która określa prawa dostępu do zestawu
                  semaforów.

       sem_otime  Czas ostatniego wywołania funkcji systemowej semop().

       sem_ctime  Czas ostatniego wywołania funkcji systemowej semctl(), która
                  zmieniła  element przedstawionej powyżej struktury lub jeden
                  z semaforów należących do zestawu.

       sem_nsems  Liczba semaforów w  zestawie.  Każdy  semafor  zestawu  jest
                  identyfikowany  przez dodatnią liczbę całkowitą z zakresu od
                  0 do sem_nsems-1.

       Semafor  jest  strukturą  typu  struct  sem,   która   składa   się   z
       następujących pól:

            ushort semval;  /* wartość semafora */
            short sempid;   /* PID procesu ostatniej operacji */
            ushort semncnt;  /* liczba oczekujących na zwiększenie semval */
            ushort semzcnt;  /* liczba oczekujących na semval = 0 */

       semval     Wartość semafora: nieujemna liczba całkowita.

       sempid     Identyfikator  ostatniego procesu, który wykonał operację na
                  tym semaforze.

       semncnt    Liczba wstrzymanych  procesów  oczekujących  na  zwiększenie
                  wartości zmiennej semval.

       semznt     Liczba  wstrzymanych procesów oczekujących aż zmienna semval
                  przyjmie wartość zero.

   Segmenty pamięci wspólnej
       Segment  pamięci  wspólnej  jest  jednoznacznie  identyfikowany   przez
       dodatnią  liczbę  całkowitą (jego shmid) i jest skojarzony ze strukturą
       typu struct shmid_ds, zdefiniowaną w <sys/shm.h>, która  składa  się  z
       następujących pól:

            struct ipc_perm shm_perm;
            int shm_segsz;       /* rozmiar segmentu */
            ushort shm_cpid;     /* PID procesu, który utworzył segment */
            ushort shm_lpid;     /* PID ostatnio operującego na segmencie */
            short shm_nattch;    /* liczba aktualnych przyłączeń */
            time_t shm_atime;    /* czas ostatniego przyłączenia*/
            time_t shm_dtime;    /* czas ostatniego odłączenia*/
            time_t shm_ctime;    /* czas ostatniej zmiany */

       shm_perm   Struktura  ipc_perm, która określa prawa dostępu do segmentu
                  pamięci wspólnej.

       shm_segsz  Rozmiar segmentu pamięci wspólnej w bajtach.

       shm_cpid   Identyfikator procesu, który utworzył  ten  segment  pamięci
                  wspólnej.

       shm_lpid   Identyfikator  procesu, który ostatni wykonał funkcję syste-
                  mową shmat() lub shmdt().

       shm_nattch Liczba aktualnych, aktywnych  przyłączeń  do  tego  segmentu
                  pamięci wspólnej.

       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 którego zmienione zostało shmid_ds.

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

Linux 0.99.13                     1993-11-01                          SVIPC(7)

Time taken: 0.00011 seconds


Created with the man page lookup class by Andrew Collington, php@amnuts.com