.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1995 Mark D. Roth (roth@uiuc.edu) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" References consulted: .\" Linux libc source code .\" Solaris manpages .\" .\" Modified Thu Jul 25 14:43:46 MET DST 1996 by Michael Haardt .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getutent 3 "20 lipca 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA getutent, getutid, getutline, pututline, setutent, endutent, utmpname \- dostęp do wpisów pliku utmp .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .PP \fBstruct utmp *getutent(void);\fP \fBstruct utmp *getutid(const struct utmp *\fP\fIut\fP\fB);\fP \fBstruct utmp *getutline(const struct utmp *\fP\fIut\fP\fB);\fP .PP \fBstruct utmp *pututline(const struct utmp *\fP\fIut\fP\fB);\fP .PP \fBvoid setutent(void);\fP \fBvoid endutent(void);\fP .PP \fBint utmpname(const char *\fP\fIfile\fP\fB);\fP .fi .SH OPIS New applications should use the POSIX.1\-specified "utmpx" versions of these functions; see STANDARDS. .PP \fButmpname\fP() ustawia nazwę pliku w formacie utmp, który będzie używany przez pozostałe funkcje utmp. Jeżeli nie użyto \fButmpname\fP() przed wywołaniem innych funkcji, to używają one domyślnej nazwy \fB_PATH_UTMP\fP, zdefiniowanej w \fI\fP. .PP \fBsetutent\fP() przesuwa wskaźnik pliku z powrotem na początek pliku utmp. Funkcja ta powinna zostać wywołana przed wywołaniem którejkolwiek z pozostałych funkcji. .PP \fBendutent\fP() zamyka plik utmp. Powinna być wywołana, gdy program już zakończył używanie tego pliku przy pomocy innych funkcji. .PP \fBgetutent\fP() odczytuje linię z pliku utmp, zaczynając od bieżącej pozycji w tym pliku. Zwraca wskaźnik do struktury zawierającej pola linii. Definicję tej struktury opisano w \fButmp\fP(5). .PP \fBgetutid\fP() przeszukuje plik w przód, zaczynając od bieżącej pozycji, biorąc pod uwagę parametr \fIut\fP. Jeżeli \fIut\->ut_type\fP jest jednym z \fBRUN_LVL\fP, \fBBOOT_TIME\fP, \fBNEW_TIME\fP lub \fBOLD_TIME\fP, to \fBgetutid\fP() wyszuka pierwszy rekord, którego pole \fIut_type\fP odpowiada \fIut\->ut_type\fP. Jeżeli \fIut\->ut_type\fP jest jednym z \fBINIT_PROCESS\fP, \fBLOGIN_PROCESS\fP, \fBUSER_PROCESS\fP lub \fBDEAD_PROCESS\fP, to \fBgetutid\fP() wyszuka pierwszy wpis, którego pole \fIut_id\fP pasuje do \fIut\->ut_id\fP. .PP \fBgetutline\fP() przeszukuje plik utmp w przód, zaczynając od bieżącej pozycji w pliku. Sprawdza wpisy, których \fIut_type\fP jest równe \fBUSER_PROCESS\fP lub \fBLOGIN_PROCESS\fP, i zwraca pierwszy z nich, którego pole \fIut_line\fP odpowiada \fIut\->ut_line\fP. .PP \fBpututline\fP() zapisuje strukturę \fIut\fP, której typem jest \fIutmp\fP, do pliku utmp. Używa \fBgetutid\fP(), aby znaleźć odpowiednie miejsce do dodania nowego rekordu. Jeśli go nie znajdzie, to \fBpututline\fP() doda nowy wpis na końcu pliku. .SH "WARTOŚĆ ZWRACANA" Funkcje \fBgetutent\fP(), \fBgetutid\fP() i \fBgetutline\fP() zwracają wskaźnik do \fIstruct utmp\fP, jeśli zakończą się powodzeniem, lub NULL w razie wystąpienia błędu. \fIstruct utmp\fP jest zaalokowana w statycznej przestrzeni danych i może zostać nadpisana przez kolejne wywołania funkcji. .PP Funkcja \fBpututline\fP() zwraca \fIut\fP, jeśli zakończy się powodzeniem, lub NULL w razie wystąpienia błędu. .PP \fButmpname\fP() zwraca 0, jeśli zachowano nową nazwę, lub \-1 w przypadku błędu. .PP On failure, these functions \fIerrno\fP set to indicate the error. .SH BŁĘDY .TP \fBENOMEM\fP Brak pamięci. .TP \fBESRCH\fP Nie znaleziono rekordu. .PP Funkcje \fBsetutent\fP(), \fBpututline\fP() i \fBgetut*\fP() mogą także zwrócić błędy opisane w \fBopen\fP(2). .SH PLIKI .TP \fI/var/run/utmp\fP baza danych obecnie zalogowanych użytkowników .TP \fI/var/log/wtmp\fP baza danych poprzednich logowań użytkowników .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. Interfejs Atrybut Wartość T{ .na .nh \fBgetutent\fP() T} Bezpieczeństwo wątkowe T{ .na .nh MT\-Unsafe init race:utent race:utentbuf sig:ALRM timer T} T{ .na .nh \fBgetutid\fP(), \fBgetutline\fP() T} Bezpieczeństwo wątkowe T{ .na .nh MT\-Unsafe init race:utent sig:ALRM timer T} T{ .na .nh \fBpututline\fP() T} Bezpieczeństwo wątkowe T{ .na .nh MT\-niebezpieczne race:utent sig:ALRM timer T} T{ .na .nh \fBsetutent\fP(), \fBendutent\fP(), \fButmpname\fP() T} Bezpieczeństwo wątkowe MT\-Unsafe race:utent .TE .sp 1 W powyższej tabeli, \fIutent\fP w \fIrace:utent\fP oznacza, że jeśli któraś z funkcji \fBsetutent\fP(), \fBgetutent\fP(), \fBgetutid\fP(), \fBgetutline\fP(), \fBpututline\fP(), \fButmpname\fP() lub \fBendutent\fP() jest używana równolegle w różnych wątkach programu, może nastąpić sytuacja wyścigu danych. .SH STANDARDY None. .SH HISTORIA XPG2, SVr4. .PP W dokumentacji XPG2 i SVID2 funkcja \fBpututline\fP() zwraca void, i to jest to, co ona rzeczywiście zwraca na wielu systemach (AIX, HPUX). HPUX wprowadza nową funkcję \fB_pututline\fP() o prototypie podanym powyżej dla \fBpututline\fP(). .PP Wszystkie te funkcje są przestarzałe na systemach nielinuksowych. POSIX.1\-2001 i POSIX.1\-2008, naśladując SUSv1, nie zawierają żadnej z tych funkcji, ale zamiast nich używają .PP .RS 4 .EX \fB#include \fP .PP \fBstruct utmpx *getutxent(void);\fP \fBstruct utmpx *getutxid(const struct utmpx *);\fP \fBstruct utmpx *getutxline(const struct utmpx *);\fP \fBstruct utmpx *pututxline(const struct utmpx *);\fP \fBvoid setutxent(void);\fP \fBvoid endutxent(void);\fP .EE .RE .PP Powyższe funkcje są dostarczane przez glibc i wykonują dokładnie te same zadania, co ich odpowiedniki bez przyrostka "x", tyle że używają struktury \fIstruct utmpx\fP, zdefiniowanej pod Linuksem dokładnie tak samo jak \fIstruct utmp\fP. glibc dostarcza także \fButmpxname\fP(), chociaż POSIX.1 nie zawiera tej funkcji. .PP Na niektórych systemach struktura \fIutmpx\fP jest rozszerzeniem struktury \fIutmp\fP o dodatkowe pola i o większe wersje istniejących pól. Utrzymywane są tam równoległe wersje plików, często jako \fI/var/*/utmpx\fP oraz \fI/var/*/wtmpx\fP. .PP Z drugiej strony linuksowe glibc nie używa pliku \fIutmpx\fP, ponieważ jego struktura \fIutmp\fP jest już wystarczająco duża. Funkcje "x" opisane powyżej są aliasami do funkcji bez "x" (np. \fBgetutxent\fP jest aliasem \fBgetutent\fP()). .SH UWAGI .SS "Uwagi dla glibc" The above functions are not thread\-safe. glibc adds reentrant versions .PP .nf \fB#include \fP .PP \fBint getutent_r(struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP \fBint getutid_r(struct utmp *\fP\fIut\fP\fB,\fP \fB struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP \fBint getutline_r(struct utmp *\fP\fIut\fP\fB,\fP \fB struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP .fi .PP Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .PP \fBgetutent_r\fP(), \fBgetutid_r\fP(), \fBgetutline_r\fP(): .nf _GNU_SOURCE || /* Since glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .fi .PP Te funkcje są rozszerzeniami GNU, analogicznymi do funkcji o tych samych nazwach, ale bez przyrostka "_r". Parametr \fIubuf\fP określa miejsce, w którym te funkcje powinny zapisać wynik. Jeśli zakończą się powodzeniem, to zwracają 0, a wskaźnik do wyniku jest zapisywany w \fI*ubufp\fP. W razie błędu funkcje zwracają \-1. Funkcje te nie mają swoich odpowiedników utmpx (POSIX.1 ich nie zawiera). .SH PRZYKŁADY Następujący przykład dodaje i usuwa rekord utmp, przy założeniu, że zostanie uruchomiony z pseudoterminalu. Użycie w rzeczywistej aplikacji wymagałoby sprawdzenia wartości zwracanych przez \fBgetpwuid\fP(3) i \fBttyname\fP(3). .PP .\" SRC BEGIN (getutent.c) .EX #include #include #include #include #include #include \& int main(void) { struct utmp entry; \& system("echo before adding entry:;who"); \& entry.ut_type = USER_PROCESS; entry.ut_pid = getpid(); strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/")); /* only correct for ptys named /dev/tty[pqr][0\-9a\-z] */ strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty")); time(&entry.ut_time); strcpy(entry.ut_user, getpwuid(getuid())\->pw_name); memset(entry.ut_host, 0, UT_HOSTSIZE); entry.ut_addr = 0; setutent(); pututline(&entry); \& system("echo after adding entry:;who"); \& entry.ut_type = DEAD_PROCESS; memset(entry.ut_line, 0, UT_LINESIZE); entry.ut_time = 0; memset(entry.ut_user, 0, UT_NAMESIZE); setutent(); pututline(&entry); \& system("echo after removing entry:;who"); \& endutent(); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "ZOBACZ TAKŻE" \fBgetutmp\fP(3), \fButmp\fP(5) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .