intro

INTRO(2)                 Podręcznik programisty Linuksa                 INTRO(2)



NAZWA
       intro - wprowadzenie do wywołań systemowych

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:

       *  skopiowania argumentów i unikalnego numeru wywołania systemowego do
          rejestrów w miejsce, gdzie spodziewa się ich jądro;

       *  przejścia do trybu jądra, gdzie jądro wykonuje faktyczną pracę
          wywołania systemowego;

       *  i ustawienia errno, jeśli wywołanie systemowe zwróci numer błędu gdy
          jądro powróci CPU do trybu użytkownika.

       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
       syscalls(2).

WARTOŚĆ ZWRACANA
       W przypadku błędu, większość wywołań zwraca ujemną liczbę błędu (tzn.
       ujemną wartość jednej ze stałych opisanych w errno(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 errno 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 jakichkolwiek 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
       feature_test_macros(7).

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
       standards(7).

UWAGI
   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ą syscall(2). Dawniej można było użyć również
       jednego z makr _syscall, opisanych w _syscall(2).

   Autorzy i prawa autorskie
       Nazwiska autorów i warunki kopiowania znajdują się w nagłówku strony man.
       Mogą one różnić się dla poszczególnych stron.

ZOBACZ TAKŻE
       _syscall(2), syscall(2), syscalls(2), errno(3), intro(3),
       capabilities(7), credentials(7), feature_test_macros(7), mq_overview(7),
       path_resolution(7), pipe(7), pty(7), sem_overview(7), shm_overview(7),
       signal(7), socket(7), standards(7), symlink(7), system_data_types(7),
       sysvipc(7), time(7)

O STRONIE
       Angielska wersja tej strony pochodzi z wydania 5.13 projektu Linux
       man-pages. 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/.


TŁUMACZENIE
       Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Adam
       Byrtek <alpha@irc.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>,
       Michał Kułach <michal.kulach@gmail.com> i Robert Luberda
       <robert@debian.org>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o
       warunkach licencji można uzyskać zapoznając się z GNU General Public
       License w wersji 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres
       manpages-pl-list@lists.sourceforge.net ⟨⟩.



Linux                          27 sierpnia 2021 r.                      INTRO(2)