.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright 1991 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\"     @(#)popen.3	6.4 (Berkeley) 4/30/91
.\"
.\" Converted for Linux, Mon Nov 29 14:45:38 1993, faith@cs.unc.edu
.\" Modified Sat May 18 20:37:44 1996 by Martin Schulze (joey@linux.de)
.\" Modified 7 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH popen 3 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
popen, pclose \- strumieniuje potok do lub z procesu
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <stdio.h>\fP
.P
\fBFILE *popen(const char *\fP\fIcommand\fP\fB, const char *\fP\fItype\fP\fB);\fP
\fBint pclose(FILE *\fP\fIstream\fP\fB);\fP
.fi
.P
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.P
\fBpopen\fP(), \fBpclose\fP():
.nf
    _POSIX_C_SOURCE >= 2
        || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH OPIS
Funkcja \fBpopen\fP() otwiera proces, tworząc potok, rozwidlając się przez
fork() i wywołując powłokę. Ponieważ potok jest z definicji jednokierunkowy,
argument \fItype\fP może określać tylko odczyt albo tylko zapis, nie oba
naraz. Otrzymany w wyniku tego strumień będzie tylko do odczytu albo tylko
do zapisu.
.P
Argument \fIcommand\fP jest wskaźnikiem do zakończonego znakiem NUL łańcucha,
zawierającego wiersz poleceń powłoki. Polecenie to jest przekazywane do
\fI/bin/sh\fP przy użyciu opcji \fB\-c\fP; wszelka interpretacja jest dokonywana
przez powłokę.
.P
Argument \fItype\fP jest wskaźnikiem do łańcucha zakończonego znakiem null,
który musi zawierać albo literę \[Bq]r\[rq] (do odczytu), albo literę
\[Bq]w\[rq] (do zapisu). Od glibc 2.9, argument ten może dodatkowo obejmować
literę  \[Bq]e\[rq], co powoduje ustawienie znacznika zamknięcia przy
wykonaniu (\fBFD_CLOEXEC\fP) na przedmiotowym deskryptorze pliku; powody, dla
których może być to użyteczne opisano przy znaczniku \fBO_CLOEXEC\fP w
podręczniku \fBopen\fP(2).
.P
Wartość zwracana przez \fBpopen\fP() to normalny strumień wejścia/wyjścia, lecz
powinien on być zamykany przy użyciu \fBpclose\fP() zamiast
\fBfclose\fP(3). Zapisywanie do takiego strumienia powoduje pisanie na
standardowe wejście polecenia. Standardowe wyjście polecenia jest takie
samo, jak procesu, który wywołał \fBpopen\fP(), chyba że zostało to zmienione
przez polecenie. Podobnie, odczyt z tak otwartego strumienia powoduje odczyt
ze standardowego wyjścia polecenia, a standardowe wejście polecenia jest
wtedy tożsame z wejściem procesu, który wywołał \fBpopen\fP().
.P
Należy zauważyć, że strumienie wyjściowe powstałe z \fBpopen\fP() są domyślnie
w pełni buforowane.
.P
Funkcja \fBpclose\fP() oczekuje na zakończenie stowarzyszonego procesu i zwraca
jego kod zakończenia, podobnie jak to czyni \fBwait4\fP(2).
.SH "WARTOŚĆ ZWRACANA"
\fBpopen\fP: przy powodzeniu zwraca wskaźnik do otwartego strumienia, który
może służyć do odczytu lub zapisu do potoku; jeśli nie powiodły się
wywołania \fBfork\fP(2) lub \fBpipe\fP(2), lub jeśli nie udało się przydzielić
pamięci, zwracane jest NULL.
.P
.\" These conditions actually give undefined results, so I commented
.\" them out.
.\" .I stream
.\" is not associated with a "popen()ed" command, if
.\".I stream
.\" already "pclose()d", or if
\fBpclose\fP: przy powodzeniu zwraca status zakończenia polecenia; jeśli
\fBwait4\fP zwróci błąd lub zostały wykryte jakieś inne błędy, zwracane jest
\-1.
.P
W przypadku błędu, obie funkcje ustawiają \fIerrno\fP, wskazując błąd.
.SH BŁĘDY
Funkcja \fBpopen\fP() nie ustawia \fIerrno\fP, jeżeli nie uda się przydzielić
pamięci. Jeżeli nie powiodą się wywoływane przez nią \fBfork\fP(2) lub
\fBpipe\fP(2), to ustawione będzie \fIerrno\fP, wskazując błąd. Jeżeli argument
\fItype\fP będzie nieprawidłowy i zostanie to wykryte, to \fIerrno\fP zostanie
ustawione na \fBEINVAL\fP.
.P
Jeżeli nie będzie możliwe otrzymanie kodu zakończenia procesu potomnego
przez \fBpclose\fP(), to \fIerrno\fP zostanie ustawione na \fBECHILD\fP.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
.na
.nh
\fBpopen\fP(),
\fBpclose\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
.TE
.SH WERSJE
Wartość \[Bq]e\[rq] dla \fItype\fP jest rozszerzeniem systemu Linux.
.SH STANDARDY
POSIX.1\-2008.
.SH HISTORIA
POSIX.1\-2001.
.SH ZASTRZEŻENIA
Proszę dokładnie zapoznać się z Zastrzeżeniami w podręczniku \fBsystem\fP(3).
.SH USTERKI
Przesunięcie standardowego wejścia polecenia otwartego do odczytu jest takie
samo dla tego polecenia i dla procesu, który wywołał \fBpopen\fP(), zatem jeśli
oryginalny proces wykona buforowany odczyt, to pozycja na wejściu polecenia
może być inna niż oczekiwano. Podobnie, wyjście polecenia otwartego dla
zapisu może zostać wymieszane z wyjściem procesu oryginalnego. Temu
ostatniemu można zapobiec, wołając przed \fBpopen\fP() funkcję \fBfflush\fP(3).
.P
.\" .SH HISTORY
.\" A
.\" .BR popen ()
.\" and a
.\" .BR pclose ()
.\" function appeared in Version 7 AT&T UNIX.
Błąd w wywołaniu powłoki jest nieodróżnialny od błędu powłoki przy
wywoływaniu polecenia, czy od natychmiastowego zakończenia
polecenia. Jedynym śladem jest kod zakończenia równy 127.
.SH "ZOBACZ TAKŻE"
\fBsh\fP(1), \fBfork\fP(2), \fBpipe\fP(2), \fBwait4\fP(2), \fBfclose\fP(3), \fBfflush\fP(3),
\fBfopen\fP(3), \fBstdio\fP(3), \fBsystem\fP(3)
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
Przemek Borys <pborys@dione.ids.pl>,
Jarosław Beczek <bexx@poczta.onet.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
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 .
