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

NAZWA

       msgctl - sterowanie kolejkami komunikatow

SK/LADNIA

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

       int msgctl(int msqid, int cmd, struct msqid_ds *buf);

OPIS

       Funkcja  ta  wykonuje  operacj  okrelon  przez  parametr cmd na kolejce
       komunikatow o identyfikatorze msqid.

       Struktura danych msqid_ds jest zdefiniowana w <sys/msg.h> nastpujco:

           struct msqid_ds {
               struct ipc_perm msg_perm;     /* Wlasnoci i uprawnienia */
               time_t          msg_stime;    /* Czas ostatniego msgsnd() */
               time_t          msg_rtime;    /* Czas ostatniego msgrcv() */
               time_t          msg_ctime;    /* Czas ostatniej zmiany */
               unsigned long   __msg_cbytes; /* Bieca liczba bajtow w
                                                kolejce (niestandardowy) */
               msgqnum_t       msg_qnum;     /* Bieca liczba komunikatow
                                                w kolejce */
               msglen_t        msg_qbytes;   /* Maksymalna liczba dostpnych
                                                bajtow w kolejce */
               pid_t           msg_lspid;    /* PID ostatniego msgsnd() */
               pid_t           msg_lrpid;    /* PID ostatniego msgrcv() */

           };

       Struktura ipc_perm jest zdefiniowana w <sys/ipc.h> nastpujco (wyronione
       pola mona ustawi za pomoc IPC_SET):

           struct ipc_perm {
               key_t key;            /* Klucz podany w msgget() */
               uid_t uid;            /* Efektywny UID wlaciciela */
               gid_t gid;            /* Efektywny GID wlaciciela */
               uid_t cuid;           /* Efektywny UID tworcy */
               gid_t cgid;           /* Efektywny GID tworcy */
               unsigned short mode;  /* Uprawnienia */
               unsigned short seq;   /* Numer sekwencji */
           };
       Dozwolone wartoci cmd to:

       IPC_STAT
              Kopiowanie    informacji   ze   struktury   kontrolnej   kolejki
              komunikatow, skojarzonej z msqid, do struktury wskazywanej przez
              buf.  Wywolujcy musi mie prawo odczytu kolejki komunikatow.

       IPC_SET
              Zapis  wartoci  niektorych  pol  struktury  msqid_ds wskazywanej
              przez parametr buf do struktury kontrolnej kolejki  komunikatow.
              Pole     msg_ctime    zostanie    automatycznie    uaktualnione.
              Zaktualizowane mog rownie zosta nastpujce  pola  tej  struktury:
              msg_qbytes,   msg_perm.uid,   msg_perm.gid   i  (przynajmniej  9
              najmniej   znaczcych   bitow   z)   msg_perm.mode.     Efektywny
              identyfikator    uytkownika    musi   wskazywa   na   wlaciciela
              (msg_perm.uid) lub na tworc (msg_perm.uid)  kolejki  komunikatow
              albo  proces  wywolujcy   musi  by uprzywilejowany.  Odpowiednie
              uprawnienia (Linux: zdolno CAP_IPC_RESOURCE) s rownie  wymagane,
              aby  nada  polu  msg_qbytes  warto  wiksz  ni parametr systemowy
              MSGMNB.

       IPC_RMID
              Natychmiastowe usunicie kolejki komunikatow i skojarzonej  z  ni
              struktury  danych.  Wszystkie  procesy  oczekujce  na  zapis lub
              odczyt z kolejki zostan wznowione i wywolania, ktore  wykonywaly
              zasygnalizuj   bld  (przypisujc  zmiennej  errno  warto  EIDRM).
              Proces wywolujcy  t  funkcj  musi  mie  odpowiednie  uprawnienia
              (prawdopodobnie  uprawnienia  uytkownika root), ewentualnie jego
              efektywny identyfikator uytkownika musi wskazywa na tworc lub na
              wlaciciela kolejki komunikatow.

WARTO ZWRACANA

       Po  pomylnym zakoczeniu, funkcja zwroci warto 0, w przeciwnym przypadku
       -1, a zmiennej errno zostanie nadana warto okrelajca rodzaj bldu.

B/LDY

       W przypadku niepomylnego zakoczenia funkcji,  zmiennej  errno  zostanie
       nadana jedna z nastpujcych wartoci:

       EACCES     Parametr  cmd  jest rowny IPC_STAT lub MSG_STAT , ale proces
                  wywolujcy funkcj nie ma prawa do odczytu  wskazywanej  przez
                  msqid kolejki komunikatow ani nie ma zdolnoci CAP_IPC_OWNER.

       EFAULT     Parametr cmd ma warto IPC_SET lub IPC_STAT, ale buf wskazuje
                  na niedostpny obszar pamici.

       EIDRM      Kolejka komunikatow zostala usunita.

       EINVAL     Niewlaciwa warto parametru cmd lub msqid.

       EPERM      Parametr cmd jest rowny IPC_SET  lub  IPC_RMID,  ale  proces
                  wywolujcy  funkcj nie jest tworc (okrelonym w msg_perm.cuid)
                  ani   wlacicielem   (okrelonym   w   msg_perm.uid)   kolejki
                  komunikatow,  a  proces nie jest uprzywilejowany (Linux: nie
                  ma zdolnoci CAP_SYS_ADMIN).  Niektore pola struktury  struct
                  msqid_ds byly w Linuksie 2.2 typu short a staly si typu long
                  w  Linuksie  2.4.  Aby  to  wykorzysta,  powinna   wystarczy
                  rekompilacja  pod  glibc-2.1.91  lub  nowsz.  (Jdro rozronia
                  stare i nowe wywolania za pomoc znacznika IPC_64 w cmd).

ZGODNE Z

       SVr4, SVID.  Kod bldu EIDRM nie zostal udokumentowany w SVID.

ZOBACZ TAKE

       msgget(2), msgrcv(2), msgsnd(2), ipc(5), capabilities(7)

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.