Provided by:
manpages-pl_20060617-4_all 
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.