.\" -*- coding: UTF-8 -*-
.\" From dholland@burgundy.eecs.harvard.edu Tue Mar 24 18:08:15 1998
.\"
.\" This man page was written in 1998 by David A. Holland
.\" Polished a bit by aeb.
.\"
.\" %%%LICENSE_START(PUBLIC_DOMAIN)
.\" Placed in the Public Domain.
.\" %%%LICENSE_END
.\"
.\" 2005-06-16 mtk, mentioned freopen()
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH stdin 3 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.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 <stdio.h>\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<unistd.h>\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 <michal.kulach@gmail.com>
.
.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 .
