Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
semget - pobranie identyfikatora zestawu semaforow
SK/LADNIA
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
OPIS
Funkcja ta zwraca identyfikator zestawu semaforow, skojarzonego z
parametrem key. Jeli key ma warto IPC_PRIVATE lub, gdy z wartoci key
nie jest skojarzony aden istniejcy zestaw semaforow, a w parametrze
semflg zostal przekazany znacznik IPC_CREAT (tzn. semflg & IPC_CREAT
jest niezerowe), to tworzony jest nowy zestaw semaforow nsems.
Znaczniki IPC_CREAT i IPC_EXCL przekazywane parametrem semflg pelni t
sam rol w obsludze semaforow, co O_CREAT i O_EXCL w parametrze mode
funkcji systemowej open(2): np. funkcja semget zglosi bld, jeli w
semflg przekazane zostan obydwa znaczniki IPC_CREAT i IPC_EXCL, za
zestaw semaforow identyfikowany kluczem key ju bdzie istnie.
Podczas tworzenia, 9 najmniej znaczcych bitow argumentu semflg okrela
prawa dostpu do zestawu semaforow (dla wlaciciela, grupy i innych).
Prawa dostpu maj ten sam format i takie samo znaczenie, co parametr
mode funkcji systemowych open(2) i creat(2) (bity praw uruchamiania nie
s istotne dla semaforow, natomiast bity praw zapisu oznaczaj moliwo
zmiany wartoci semaforow).
Podczas tworzenia nowego zestawu semaforow semget inicjalizuje struktur
semid_ds zwizan z zestawem semaforow w nastpujcy sposob:
sem_perm.cuid oraz sem_perm.uid przypisany zostanie efektywny
identyfikator uytkownika procesu wywolujcego.
sem_perm.cgid oraz sem_perm.gid przypisany zostanie efektywny
identyfikator grupy procesu wywolujcego.
9 najmniej znaczcym bitom pola sem_perm.mode zostan przypisane
ich odpowiedniki z parametru semflg.
Polu sem_nsems przypisania zostanie, zawarta w parametrze nsems,
liczba semaforow w zestawie.
sem_otime przyjmie warto 0.
sem_ctime przypisany zostanie aktualny czas.
Parametr nsems moe mie warto 0 (nie jest brany pod uwag), jeli nie
bdzie tworzony zestaw semaforow. W przeciwnym przypadku parametr nsems
musi by wikszy od 0 i mniejszy lub rowny maksymalnej liczbie semaforow
w zestawie (SEMMSL).
Jeli zestaw semaforow ju istnieje, wowczas weryfikowane s prawa dostpu.
WARTO ZWRACANA
W wyniku pomylnego wykonania wywolania, funkcja zwroci identyfikator
zestawu semaforow (nieujemn liczb calkowit). W przeciwnym przypadku
zwroci -1, za zmiennej errno zostanie przypisany kod wskazujcy rodzaj
bldu.
B/LDY
W przypadku niepowodzenia, zmiennej errno zostanie przypisana jedna z
nastpujcych wartoci:
EACCES Zestaw semaforow identyfikowany kluczem key istnieje, ale
proces wywolujcy nie ma praw dostpu do niego.
EEXIST Zestaw semaforow o identyfikatorze key istnieje, ale w
parametrze semflg przekazane zostaly jednoczenie oba
znaczniki IPC_CREAT i IPC_EXCL.
ENOENT Nie ma zestawu semaforow o identyfikatorze key, za znacznik
IPC_CREAT nie zostal przekazany w parametrze semflg.
EINVAL nsems jest mniejsze ni 0 lub wiksze ni ograniczenie liczby
semaforow w zestawie (SEMMSL), lub zestaw semaforow, do
ktoregoodnosi si key ju istnieje a nsems jest wiksze ni
liczba semaforow w tym zestawie.
ENOMEM Zestaw semaforow powinien zosta utworzony, ale zabraklo
pamici na now struktur danych.
ENOSPC Nastpila proba przekroczenia ograniczenia liczby zestawow
(SEMMNI), lub lcznej liczby semaforow w systemie (SEMMNS).
UWAGI
Stala IPC_PRIVATE nie jest znacznikiem, tylko specjaln wartoci typu
key_t. Jeli zostanie ona przekazana jako warto parametru key, wowczas
(w razie pomylnego wykonania) funkcja systemowa pominie wszystko oprocz
najmniej znaczcych 9 bitow semflg, tworzc nowy zestaw semaforow, nie
posiadajcy identyfikatora.
Wystpuj nastpujce ograniczenia zasobow systemowych, zwizane z
wywolaniem semget:
SEMMNI Maksymalna liczba zestawow semaforow w systemie: zalena od
polityki.
SEMMSL Maksymalna liczba semaforow w zestawie: zalena od
implementacji (aktualnie 500).
SEMMNS Maksymalna liczba semaforow w systemie: zalena od polityki.
Warto wiksza ni SEMMSL * SEMMNI pozbawia to ograniczenie
sensu.
USTERKI
Wybrana nazwa, IPC_PRIVATE, prawdopodobnie nie jest najszczliwsza.
IPC_NEW w sposob bardziej przejrzysty odzwierciedlalo by rol tej
wartoci.
Struktury danych skojarzone z poszczegolnymi semaforami z zestawu nie s
inicjalizowane przez wywolanie systemowe. Aby zainicjalizowa te
struktury, naley nastpnie uy dla tego zestawu semaforow wywolania
semctl(2) z rozkazami SETVAL lub SETALL.
ZGODNE Z
SVr4, SVID. SVr4 dokumentuje dodatkowe stale bldow: EFBIG, E2BIG,
EAGAIN, ERANGE, EFAULT.
ZOBACZ TAKE
ftok(3), ipc(5), semctl(2), semop(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.