Provided by:
manpages-pl-dev_20060617-3_all 
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.