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

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.