.\" Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\" 
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\" 
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Added correction due to Nick Duffek <nsd@bbc.com>, aeb, 960426
.\" Modified Wed Nov  6 04:00:31 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified, 8 Jan 2003, Michael Kerrisk, <mtk16@ext.canterbury.ac.nz>
.\"    Removed EIDRM from errors - that can't happen...
.\"
.\" Translated by Rafał Lewczuk, 9 May 1999
.\" Aktualność: man-pages 1.55
.\"
.TH MSGGET 2 1993-11-01 "Linux 0.99.13" "Podręcznik programisty Linuksa" 
.SH NAZWA
msgget \- pobranie identyfikatora kolejki komunikatów
.SH SKŁADNIA
.nf
.B
#include <sys/types.h>
.B
#include <sys/ipc.h>
.B
#include <sys/msg.h>
.fi
.sp
.BI "int msgget(key_t " key ,
.BI "int " msgflg );
.SH OPIS
\fI Uwaga! To tłumaczenie może być nieaktualne!\fP
.PP
Funkcja zwraca identyfikator kolejki komunikatów skojarzonej
z wartością parametru
.IR key .
Jeśli 
.I key
ma wartość
.B IPC_PRIVATE
lub jeśli nie istnieje kolejka o zadanym kluczu
.IR key ,
a w parametrze
.I msgflg
zostanie przekazany znacznik
.B IPC_CREAT
(tzn.
.IB msgflg & IPC_CREAT
będzie różne od zera), to zostanie utworzona nowa kolejka.
Obecność znaczników
.B IPC_CREAT
i
.B IPC_EXCL
w parametrze
.I msgflg
ma to samo znaczenie, jeśli chodzi o istnienie kolejki komunikatów,
co obecność znaczników
.B O_CREAT
i
.B O_EXCL
w argumencie mode funkcji systemowej
.BR open (2):
tzn. funkcja
.B msgget
nie wykona się prawidłowo, jeśli
.I msgflg
będzie zawierać jednocześnie oba znaczniki
.B IPC_CREAT
i
.BR IPC_EXCL ,
zaś kolejka komunikatów skojarzona z
.IR key
już będzie istnieć.
.PP
Podczas tworzenia, dziewięć najmniej znaczących bitów argumentu
.I msgflg
definiuje prawa dostępu do kolejki.
Prawa te mają one taką samą postać i znaczenie (semantykę) jak parametr
funkcji systemowych
.BR open (2)
i
.BR creat (2)
określający prawa dostępu. (Prawa do uruchamiania nie są używane.)
.PP
Jeśli tworzona jest nowa kolejka komunikatów, wywołanie to w następujący
sposób inicjalizuje strukturę danych
.B msqid_ds
opisującą systemową kolejkę komunikatów:
.IP
.B msg_perm.cuid
i
.B msg_perm.uid
przyjmują wartość efektywnego identyfikatora właściciela procesu wywołującego.
.IP
.B msg_perm.cgid
i
.B msg_perm.gid
przyjmują wartość efektywnego identyfikatora grupy procesu wywołującego.
.IP
9 najmniej znaczących bitów pola 
.B msg_perm.mode
jest kopiowanych z 9 najmniej znaczących bitów 
.IR msgflg .
.IP
.BR msg_qnum ,
.BR msg_lspid ,
.BR msg_lrpid ,
.B msg_stime
i
.B msg_rtime
przyjmują wartość 0.
.IP
.B msg_ctime
jest ustawiane na aktualny czas.
.IP
.B msg_qbytes
przyjmuje wartość równą ograniczeniu systemowemu
.BR MSGMNB .
.PP
Jeśli kolejka istnieje to prawa dostępu są weryfikowane i system sprawdza,
czy kolejka nie jest przeznaczona do usunięcia.
.SH "WARTOŚĆ ZWRACANA"
W przypadku pomyślnego zakończenia, funkcja zwraca identyfikator kolejki
komunikatów (liczbę nieujemną), a w przeciwnym przypadku zwraca
.B \-1
i przypisuje zmiennej
.B errno
stosowną wartość.
.SH BŁĘDY
W przypadku niepowodzenia, zmienna
.B errno
może przyjąć jedną z następujących wartości:
.TP 11
.B EACCES
Kolejka skojarzona z
.IR key ,
istnieje, ale proces wywołujący funkcję nie ma wystarczających praw dostępu
do tej kolejki.
.TP
.B EEXIST
Kolejka skojarzona z wartością
.B key
istnieje a
.I msgflg
zawiera jednocześnie oba znaczniki
.B IPC_CREAT
i
.BR IPC_EXCL .
.TP
.B ENOENT
Kolejka skojarzona z wartością
.I key
nie istnieje, zaś 
.I msgflg
nie zawiera flagi 
.BR IPC_CREAT .
.TP
.B ENOMEM
Kolejka komunikatów powinna zostać utworzona, ale w systemie brak jest
pamięci na utworzenie nowej struktury danych.
.TP
.B ENOSPC
Kolejka komunikatów powinna zostać utworzona, ale przekroczone zostałoby
systemowe ograniczenie
.RB ( MSGMNI )
na ilość istniejących kolejek komunikatów.
.SH UWAGI
.B IPC_PRIVATE
nie jest znacznikiem tylko szczególną wartością typu
.BR key_t .
Jeśli wartość ta zostanie użyta jako parametr
.IR key ,
to system uwzględni jedynie 9 najniższych bitów parametru
.IR msgflg ,
stanowiących bity uprawnień, i (w razie powodzenia) utworzy nową kolejkę.
.PP
Wywołania
.B msgget
dotyczą następujące ograniczenia systemowe:
.TP 11
.B MSGMNI
Maksymalna liczba kolejek komunikatów w systemie:
zależne od lokalnej strategii (policy dependent).
.SH USTERKI
Wybrana nazwa, IPC_PRIVATE, prawdopodobnie nie jest najszczęśliwsza.
IPC_NEW w sposób bardziej przejrzysty odzwierciedlało by rolę tej wartości.
.SH "ZGODNE Z"
SVr4, SVID.
Do wersji 2.3.20, Linux zwracał EIDRM dla
.B msgget
na kolejce komunikatów przeznaczonej do skasowania.
.SH "ZOBACZ TAKŻE"
.BR ftok (3),
.BR ipc (5),
.BR msgctl (2),
.BR msgsnd (2),
.BR msgrcv (2).
.SH "INFORMACJE O TŁUMACZENIU"
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i 
\fImoże nie być aktualne\fR. W razie zauważenia różnic między powyższym opisem
a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie 
się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
.IP
man \-\-locale=C 2 msgget
.PP
Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod
adresem http://sourceforge.net/projects/manpages\-pl/.
