.\" Copyright (C) 2007 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" 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. .\" %%%LICENSE_END .\" .\" 2007-10-23 mtk: moved the _syscallN specific material to the .\" new _syscall(2) page, and substantially enhanced and rewrote .\" the remaining material on this page. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" This file is distributed under the same license as original manpage .\" Copyright of the original manpage: .\" Copyright © 2007 Michael Kerrisk .\" Copyright © of Polish translation: .\" Adam Byrtek (PTM) , 1999. .\" Andrzej M. Krzysztofowicz (PTM) , 2002. .\" Michał Kułach , 2012, 2013, 2014, 2016. .TH INTRO 2 2014\-02\-20 Linux "Podręcznik programisty Linuksa" .SH NAZWA intro \- wprowadzenie do wywołań systemowych .SH OPIS Dział 2. podręcznika opisuje wywołania systemowe Linuksa. Wywołanie systemowe jest punktem dostępu do jądra Linux. Nie są one zwykle wywoływane bezpośrednio: większość wywołań systemowych posiada odpowiednie funkcje obudowujące biblioteki C, które przeprowadzają wymagane kroki (np. przejście do trybu jądra), aby je wywołać. Dlatego wykonanie wywołania systemowego wygląda tak samo, jak wywołanie zwykłej funkcji bibliotecznej. W wielu przypadkach funkcja opakowujące biblioteki C nie czyni nic więcej oprócz: .IP * 3 skopiowania argumentów i unikalnego numeru wywołania systemowego do rejestrów w miejsce, gdzie spodziewa się ich jądro; .IP * przejścia do trybu jądra, gdzie jądro wykonuje faktyczną pracę wywołania systemowego; .IP * i ustawienia \fIerrno\fP, jeśli wywołanie systemowe zwróci numer błędu gdy jądro powróci CPU do trybu użytkownika. .LP Jednak w kilku przypadkach funkcja opakowująca może czynić więcej np. wykonując pewne wstępne przetworzenie argumentów przed przejściem do trybu jądra lub wykonując przetworzenie wartości zwracanych przez wywołanie systemowego. Jeśli tak jest, to strony podręcznika w sekcji 2 zwykle starają się poinformować o detalach interfejsu biblioteki (zwykle GNU) C oraz surowego wywołania systemowego. Najczęściej główny rozdział OPIS skupia się na wywołaniu bibliotecznym C, a różnice wywołania systemowego są opisane w sekcji UWAGI. Lista wywołań systemowych Linuksa jest dostępna w podręczniku \fBsyscalls\fP(2). .SH "WARTOŚĆ ZWRACANA" W przypadku błędu, większość wywołań zwraca ujemną liczbę błędu (tzn. ujemną wartość jednej ze stałych opisanych w \fBerrno\fP(3)). Opakowania biblioteki C ukrywają te detale przed wywołującym: gdy wywołanie systemowe zwróci wartość ujemną, opakowanie kopiuje wartość absolutną do zmiennej \fIerrno\fP i zwraca \-1 jako wartość zwracaną przez opakowanie. Wartość zwracana przez udane wywołanie systemowe zależy od niego. Wiele wywołań zwraca przy powodzeniu 0, lecz niektóre zwracają również wartości niezerowe przy pomyślnym wywołaniu systemowym. Detale są opisane w poszczególnych stronach podręcznika. W niektórych przypadkach, programista musi zdefiniować testowe makro funkcji aby pozyskać deklarację wywołania systemowego z pliku nagłówkowego opisanego w rozdziale SKŁADNIA strony podręcznika systemowego (gdy jest to wymagane, takie makra muszą być zdefiniowane przez dołączeniem \fIjakichkolwiek\fP plików nagłówkowych). W takich sytuacjach, wymagane makro jest opisane w odpowiednim podręczniku systemowym. Więcej informacji o testowych makrach funkcji można znaleźć w \fBfeature_test_macros\fP(7). .SH "ZGODNE Z" Poszczególne zwroty i skróty używane do określenia wariantów Uniksa i standardów, do których wywołania w tym dziale się stosują. Patrz \fBstandards\fP(7). .SH UWAGI .SS "Bezpośrednie wywoływanie" W większości przypadków nie ma potrzeby bezpośredniego wywoływania wywołań systemowych, lecz czasem zdarza się, że jakaś przydatna funkcja systemowa nie ma zaimplementowanego przydatnej funkcji opakowującej w standardowej bibliotece C. Programista musi wówczas wywołać wywołanie systemowe ręcznie, za pomocą \fBsyscall\fP(2). Dawniej można było użyć również jednego z makr _syscall, opisanych w \fB_syscall\fP(2). .SS "Autorzy i prawa autorskie" Nagłówek źródeł każdej strony podręcznika systemowego zawiera informacje o autorach i warunkach wykorzystania. Mogą się one różnić, w zależności od strony. .SH "ZOBACZ TAKŻE" .ad l .nh \fB_syscall\fP(2), \fBsyscall\fP(2), \fBsyscalls\fP(2), \fBerrno\fP(3), \fBintro\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBfeature_test_macros\fP(7), \fBmq_overview\fP(7), \fBpath_resolution\fP(7), \fBpipe\fP(7), \fBpty\fP(7), \fBsem_overview\fP(7), \fBshm_overview\fP(7), \fBsignal\fP(7), \fBsocket\fP(7), \fBstandards\fP(7), \fBsvipc\fP(7), \fBsymlink\fP(7), \fBtime\fP(7) .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 4.05 projektu Linux \fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem \%https://www.kernel.org/doc/man\-pages/. .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Adam Byrtek (PTM) , Andrzej M. Krzysztofowicz (PTM) i Michał Kułach . .PP Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 4.05 \fPoryginału.