.\" 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. .\" .\" Modified Tue Oct 22 17:54:56 1996 by Eric S. Raymond .\" Modified 1 Jan 2002, Martin Schulze .\" Modified 4 Jan 2002, Michael Kerrisk .\" Translated by Rafał Lewczuk, 9 May 1999 .\" Last update: A. Krzysztofowicz , Mar 2002, .\" manpages 1.48 .\" .TH SEMGET 2 2002-01-04 "Linux 2.5" "Podręcznik programisty Linuksa" .SH NAZWA semget \- pobranie identyfikatora zestawu semaforów .SH SKŁADNIA .nf .B #include .B #include .B #include .fi .sp .BI "int semget(key_t " key , .BI "int " nsems , .BI "int " semflg ); .SH OPIS \fI Uwaga! To tłumaczenie może być nieaktualne!\fP .PP Funkcja ta zwraca identyfikator zestawu semaforów, skojarzonego z parametrem .IR key . Jeśli .I key ma wartość .B IPC_PRIVATE lub, gdy z wartością .I key nie jest skojarzony żaden istniejący zestaw semaforów, a w parametrze .I semflg został przekazany znacznik .B IPC_CREAT (tzn. .IR semflg " &" .B IPC_CREAT jest niezerowe), to tworzony jest nowy zestaw semaforów .IR nsems . .PP Znaczniki .B IPC_CREAT i .B IPC_EXCL przekazywane parametrem .I semflg pełnią tę samą rolę w obsłudze semaforów, co .B O_CREAT i .B O_EXCL w parametrze mode funkcji systemowej .BR open (2): np. funkcja .B semget zgłosi błąd, jeśli w .I semflg przekazane zostaną obydwa znaczniki .B IPC_CREAT i .BR IPC_EXCL , zaś zestaw semaforów identyfikowany kluczem .I key już będzie istnieć. .PP Podczas tworzenia, 9 najmniej znaczących bitów argumentu .I semflg określa prawa dostępu do zestawu semaforów (dla właściciela, grupy i innych). Prawa dostępu mają ten sam format i takie samo znaczenie, co parametr mode funkcji systemowych .BR open (2) i .BR creat (2) (bity praw uruchamiania nie są istotne dla semaforów, natomiast bity praw zapisu oznaczają możliwość zmiany wartości semaforów). .PP Podczas tworzenia nowego zestawu semaforów .B semget inicjalizuje strukturę .B semid_ds związaną z zestawem semaforów w następujący sposób: .IP .B sem_perm.cuid oraz .B sem_perm.uid przypisany zostanie efektywny identyfikator użytkownika procesu wywołującego. .IP .B sem_perm.cgid oraz .B sem_perm.gid przypisany zostanie efektywny identyfikator grupy procesu wywołującego. .IP 9 najmniej znaczącym bitom pola .B sem_perm.mode zostaną przypisane ich odpowiedniki z parametru .IR semflg . .IP Polu .B sem_nsems przypisania zostanie, zawarta w parametrze .IR nsems , liczba semaforów w zestawie. .IP .B sem_otime przyjmie wartość 0. .IP .B sem_ctime przypisany zostanie aktualny czas. .PP Parametr .I nsems może mieć wartość .B 0 (nie jest brany pod uwagę), jeśli nie będzie tworzony zestaw semaforów. W przeciwnym przypadku parametr .I nsems musi być większy od .B 0 i mniejszy lub równy maksymalnej liczbie semaforów w zestawie .RB ( SEMMSL ). .PP Jeśli zestaw semaforów już istnieje, wówczas weryfikowane są prawa dostępu. .\" i następuje sprawdzenie, czy zestaw został zanaczony do usunięcia. .SH "WARTOŚĆ ZWRACANA" W wyniku pomyślnego wykonania wywołania, funkcja zwróci identyfikator zestawu semaforów (nieujemną liczbę całkowitą). W przeciwnym przypadku zwróci .BR \-1 , zaś zmiennej .B errno zostanie przypisany kod wskazujący rodzaj błędu. .SH BŁĘDY W przypadku niepowodzenia, zmiennej .B errno zostanie przypisana jedna z następujących wartości: .TP 11 .B EACCES Zestaw semaforów identyfikowany kluczem .I key istnieje, ale proces wywołujący nie ma praw dostępu do niego. .TP .B EEXIST Zestaw semaforów o identyfikatorze .B key istnieje, ale w parametrze .I semflg przekazane zostały jednocześnie oba znaczniki .B IPC_CREAT i .BR IPC_EXCL . .\" .TP .\" .B EIDRM .\" Zestaw semaforów jest przeznaczony do usunięcia. .TP .B ENOENT Nie ma zestawu semaforów o identyfikatorze .IR key , zaś znacznik .B IPC_CREAT nie został przekazany w parametrze .IR semflg . .TP .B EINVAL .IR nsems jest mniejsze niż 0 lub większe niż ograniczenie liczby semaforów w zestawie .RB ( SEMMSL ), lub zestaw semaforów, do któregoodnosi się .I key już istnieje a .I nsems jest większe niż liczba semaforów w tym zestawie. .TP .B ENOMEM Zestaw semaforów powinien zostać utworzony, ale zabrakło pamięci na nową strukturę danych. .TP .B ENOSPC Nastąpiła próba przekroczenia ograniczenia liczby zestawów .RB ( SEMMNI ), lub łącznej liczby semaforów w systemie .RB ( SEMMNS ). .SH UWAGI Stała .B IPC_PRIVATE nie jest znacznikiem, tylko specjalną wartością typu .BR key_t . Jeśli zostanie ona przekazana jako wartość parametru .IR key , wówczas (w razie pomyślnego wykonania) funkcja systemowa pominie wszystko oprócz najmniej znaczących 9 bitów .IR semflg , tworząc nowy zestaw semaforów, nie posiadający identyfikatora. .PP Występują następujące ograniczenia zasobów systemowych, związane z wywołaniem .BR semget : .TP 11 .B SEMMNI Maksymalna liczba zestawów semaforów w systemie: zależna od polityki. .TP .B SEMMSL Maksymalna liczba semaforów w zestawie: zależna od implementacji (aktualnie 500). .TP .B SEMMNS Maksymalna liczba semaforów w systemie: zależna od polityki. Wartość większa niż .B SEMMSL * SEMMNI pozbawia to ograniczenie sensu. .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. .LP Struktury danych skojarzone z poszczególnymi semaforami z zestawu nie są inicjalizowane przez wywołanie systemowe. Aby zainicjalizować te struktury, należy następnie użyć dla tego zestawu semaforów wywołania .BR semctl (2) z rozkazami .B SETVAL lub .BR SETALL . .SH "ZGODNE Z" SVr4, SVID. SVr4 dokumentuje dodatkowe stałe błędów: EFBIG, E2BIG, EAGAIN, ERANGE, EFAULT. .SH "ZOBACZ TAKŻE" .BR ftok (3), .BR ipc (5), .BR semctl (2), .BR semop (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 semget .PP Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages\-pl/.