.\" -*- coding: UTF-8 -*- .\" %%%LICENSE_START(PUBLIC_DOMAIN) .\" Placed in the Public Domain. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH stdin 3 "6 maja 2025 r." "Linux man\-pages 6.15" .SH NAZWA stdin, stdout, stderr \- standardowe strumienie wejścia/wyjścia .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP,\ \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBextern\ FILE\ \ *\fP\fIstdin\fP\fB;\fP \fBextern\ FILE\ \ *\fP\fIstdout\fP\fB;\fP \fBextern\ FILE\ \ *\fP\fIstderr\fP\fB;\fP .fi .SH OPIS W zwykłych okolicznościach, każdy program uniksowy przy starcie ma otwierane trzy strumienie: jeden do wejścia, jeden do wyjścia i jeden do wypisywania diagnostyki lub błędów. Są one zwykle wiązane z terminalem użytkownika (zob. \fBtty\fP(4), lecz mogą też odnosić się do plików lub innych urządzeń, w zależności od ustawienia żądanego przez proces macierzysty (zob. też rozdział \[Bq]Redirection\[rq] (przekierowanie) w podręczniku \fBsh\fP(1)). .P Strumień wejściowy określa się jako \[Bq]standardowe wejście\[rq] (ang. standard input), strumień wyjściowy jako \[Bq]standardowe wyjście\[rq] (ang. standard output), a strumień błędów jako \[Bq]standardowe wyjście błędów\[rq] (ang. standard error). Skrócona postać angielskich nazw tworzy symbole, za pomocą których można odnosić się do tych plików: \fIstdin\fP, \fIstdout\fP i \fIstderr\fP. .P Każdy z tych symboli jest makrem \fBstdio\fP(3) typu wskaźnik, wskazującym na \fIFILE\fP i może być użyty z funkcjami takimi jak \fBfprintf\fP(3) lub \fBfread\fP(3). .P Ponieważ \fIFILE\fP są opakowaniem buforującym uniksowe deskryptory plików, do tych samych plików można dostać się również za pomocą surowego uniksowego interfejsu pliku tj. funkcji takich jak \fBread\fP(2) i \fBlseek\fP(2). .P Przy uruchomieniu programu, liczbami deskryptorów plików związanymi ze strumieniami \fIstdin\fP, \fIstdout\fP i \fIstderr\fP są, odpowiednio, 0, 1 i 2. W \fI\fP są zdefiniowane symbole preprocesora \fBSTDIN_FILENO\fP, \fBSTDOUT_FILENO\fP i \fBSTDERR_FILENO\fP z tymi wartościami (zastosowanie \fBfreopen\fP(3) do jednego z tych strumieni może zmienić numer deskryptora pliku powiązanego ze strumieniem). .P Proszę zauważyć, że mieszane stosowanie \fIFILE\fP i surowych deskryptorów plików może dawać nieoczekiwane wyniki i powinno się go unikać (dla masochistów: POSIX.1, rozdział 8.2.3, opisuje szczegółowo jak ta współpraca powinna wyglądać). Ogólna zasada jest taka, że deskryptory plików są obsługiwane w jądrze, natomiast stdio jest tylko biblioteką. Oznacza to na przykład, że po \fBexec\fP(3) potomkowie odziedziczą wszystkie otwarte deskryptory plików, natomiast wszystkie stare strumienie staną się niedostępne. .P Ponieważ symbole \fIstdin\fP, \fIstdout\fP i \fIstderr\fP są określone jako makra, przypisania do nich są nieprzenośne. Standardowe strumienie mogą być również przypisane do różnych plików, za pomocą funkcji bibliotecznej \fBfreopen\fP(3), wprowadzonej specjalnie, aby dało się zmienić przypisania \fIstdin\fP, \fIstdout\fP i \fIstderr\fP. Standardowe strumienie są zamykane wywołaniem do \fBexit\fP(3) oraz przez zwykłe zakończenie programu. .SH STANDARDY C11, POSIX.1\-2008. .P Standardy wymagają także, aby te trzy strumienie były otwierane przy uruchomieniu programu. .SH HISTORIA C89, POSIX.1\-2001. .SH UWAGI Strumień \fIstderr\fP jest niebuforowany. Strumień \fIstdout\fP jest buforowany do wiersza, gdy wskazuje na terminal. Wiersze częściowe nie pojawią się, dopóki nie wywoła się \fBfflush\fP(3) lub \fBexit\fP(3) albo dopóki nie wypisany będzie znak nowego wiersza. Może to dawać nieoczekiwane wyniki, szczególnie przy wyjściu debugowania. Tryb buforowania standardowych strumieni (lub dowolnych strumieni) można zmienić wywołaniem \fBsetbuf\fP(3) lub \fBsetvbuf\fP(3). Proszę zauważyć, że w przypadku gdy \fIstdin\fP jest powiązany z terminalem, rolę może odgrywać również buforowanie wejścia w sterowniku terminala, zupełnie nie związane z buforowaniem stdio (i faktycznie, zwykłe wejście na terminalu jest buforowane do wiersza w jądrze). Tę obsługę wejścia w jądrze można zmienić wywołaniami takimi jak \fBtcsetattr\fP(3); zob. też \fBstty\fP(1) i \fBtermios\fP(3). .SH "ZOBACZ TAKŻE" \fBcsh\fP(1), \fBsh\fP(1), \fBopen\fP(2), \fBfopen\fP(3), \fBstdio\fP(3) .PP .SH TŁUMACZENIE Tłumaczenie niniejszej strony podręcznika: 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 .