Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       msgget - pobranie identyfikatora kolejki komunikatow

SK/LADNIA

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

       int msgget(key_t key, int msgflg);

OPIS

       Funkcja  zwraca identyfikator kolejki komunikatow skojarzonej z wartoci
       parametru key.  Jeli key ma warto IPC_PRIVATE  lub  jeli  nie  istnieje
       kolejka o zadanym kluczu key, a w parametrze msgflg zostanie przekazany
       znacznik IPC_CREAT (tzn.  msgflg&IPC_CREAT  bdzie  rone  od  zera),  to
       zostanie   utworzona  nowa  kolejka.   Obecno  znacznikow  IPC_CREAT  i
       IPC_EXCL w parametrze msgflg  ma  to  samo  znaczenie,  jeli  chodzi  o
       istnienie  kolejki komunikatow, co obecno znacznikow O_CREAT i O_EXCL w
       argumencie mode funkcji systemowej open(2):  tzn.  funkcja  msgget  nie
       wykona  si  prawidlowo,  jeli  msgflg  bdzie  zawiera  jednoczenie  oba
       znaczniki IPC_CREAT i IPC_EXCL, za kolejka komunikatow skojarzona z key
       ju bdzie istnie.

       Podczas  tworzenia,  dziewi  najmniej  znaczcych bitow argumentu msgflg
       definiuje prawa dostpu do kolejki.  Prawa te maj one tak  sam  posta  i
       znaczenie   (semantyk)  jak  parametr  funkcji  systemowych  open(2)  i
       creat(2) okrelajcy prawa dostpu. (Prawa do uruchamiania nie s uywane.)

       Jeli tworzona jest nowa kolejka komunikatow, wywolanie to  w  nastpujcy
       sposob  inicjalizuje  struktur  danych msqid_ds opisujc systemow kolejk
       komunikatow:

              msg_perm.cuid  i   msg_perm.uid   przyjmuj   warto   efektywnego
              identyfikatora wlaciciela procesu wywolujcego.

              msg_perm.cgid   i   msg_perm.gid   przyjmuj   warto  efektywnego
              identyfikatora grupy procesu wywolujcego.

              9 najmniej znaczcych bitow pola msg_perm.mode jest kopiowanych z
              9 najmniej znaczcych bitow msgflg.

              msg_qnum,  msg_lspid,  msg_lrpid, msg_stime i msg_rtime przyjmuj
              warto 0.

              msg_ctime jest ustawiane na aktualny czas.

              msg_qbytes przyjmuje warto rown ograniczeniu systemowemu MSGMNB.

       Jeli kolejka istnieje to prawa dostpu s weryfikowane i system sprawdza,
       czy kolejka nie jest przeznaczona do usunicia.

WARTO ZWRACANA

       W  przypadku pomylnego zakoczenia, funkcja zwraca identyfikator kolejki
       komunikatow (liczb nieujemn), a w  przeciwnym  przypadku  zwraca  -1  i
       przypisuje zmiennej errno stosown warto.

B/LDY

       W  przypadku  niepowodzenia, zmienna errno moe przyj jedn z nastpujcych
       wartoci:

       EACCES     Kolejka skojarzona z key,  istnieje,  ale  proces  wywolujcy
                  funkcj nie ma wystarczajcych praw dostpu do tej kolejki.

       EEXIST     Kolejka  skojarzona  z wartoci key istnieje a msgflg zawiera
                  jednoczenie oba znaczniki IPC_CREAT i IPC_EXCL.

       ENOENT     Kolejka skojarzona z wartoci key nie istnieje, za msgflg nie
                  zawiera flagi IPC_CREAT.

       ENOMEM     Kolejka  komunikatow powinna zosta utworzona, ale w systemie
                  brak jest pamici na utworzenie nowej struktury danych.

       ENOSPC     Kolejka   komunikatow   powinna   zosta    utworzona,    ale
                  przekroczone  zostaloby  systemowe  ograniczenie (MSGMNI) na
                  ilo istniejcych kolejek komunikatow.

UWAGI

       IPC_PRIVATE nie jest znacznikiem tylko szczegoln  wartoci  typu  key_t.
       Jeli  warto  ta  zostanie  uyta  jako  parametr key, to system uwzgldni
       jedynie 9 najniszych bitow parametru msgflg, stanowicych bity uprawnie,
       i (w razie powodzenia) utworzy now kolejk.

       Wywolania msgget dotycz nastpujce ograniczenia systemowe:

       MSGMNI     Maksymalna  liczba kolejek komunikatow w systemie: zalene od
                  lokalnej strategii (policy dependent).

USTERKI

       Wybrana nazwa,  IPC_PRIVATE,  prawdopodobnie  nie  jest  najszczliwsza.
       IPC_NEW  w  sposob  bardziej  przejrzysty  odzwierciedlalo  by  rol tej
       wartoci.

ZGODNE Z

       SVr4, SVID.  Do wersji  2.3.20,  Linux  zwracal  EIDRM  dla  msgget  na
       kolejce komunikatow przeznaczonej do skasowania.

ZOBACZ TAKE

       ftok(3), ipc(5), msgctl(2), msgsnd(2), msgrcv(2).

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.