.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (c) 1991 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\"     @(#)exec.3	6.4 (Berkeley) 4/19/91
.\"
.\" Converted for Linux, Mon Nov 29 11:12:48 1993, faith@cs.unc.edu
.\" Updated more for Linux, Tue Jul 15 11:54:18 1997, pacman@cqc.com
.\" Modified, 24 Jun 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\"     Added note on casting NULL
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH exec 3 "7 stycznia 2023 r." "Linux man\-pages 6.03" 
.SH NAZWA
execl, execlp, execle, execv, execvp, execvpe \- uruchamia plik
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <unistd.h>\fP
.PP
\fBextern char **environ;\fP
.PP
\fBint execl(const char *\fP\fIpathname\fP\fB, const char *\fP\fIarg\fP\fB, ...\fP
\fB/*, (char *) NULL */);\fP
\fBint execlp(const char *\fP\fIfile\fP\fB, const char *\fP\fIarg\fP\fB, ...\fP
\fB/*, (char *) NULL */);\fP
\fBint execle(const char *\fP\fIpathname\fP\fB, const char *\fP\fIarg\fP\fB, ...\fP
\fB                /*, (char *) NULL, char *const \fP\fIenvp\fP\fB[] */);\fP
\fBint execv(const char *\fP\fIpathname\fP\fB, char *const \fP\fIargv\fP\fB[]);\fP
\fBint execvp(const char *\fP\fIfile\fP\fB, char *const \fP\fIargv\fP\fB[]);\fP
\fBint execvpe(const char *\fP\fIfile\fP\fB, char *const \fP\fIargv\fP\fB[], char *const \fP\fIenvp\fP\fB[]);\fP
.fi
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
\fBexecvpe\fP():
.nf
    _GNU_SOURCE
.fi
.SH OPIS
Rodzina funkcji \fBexec\fP() zastępuje w pamięci obraz bieżącego procesu
obrazem nowego procesu. Funkcje opisane na tej stronie podręcznika są tylko
nakładkami dla funkcji \fBexecve\fP(2). (Dodatkowe informacje na temat
nadpisywania bieżącego procesu można znaleźć na stronie podręcznika
\fBexecve\fP(2)).
.PP
Pierwszym argumentem tych funkcji jest ścieżka do pliku, który ma być
uruchomiony.
.PP
.\"
Funkcje mogą być pogrupowane na podstawie liter, które następują po
przedrostku \[Bq]exec\[rq].
.SS "l \- execl(), execlp(), execle()"
Kolejne wyrażenia \fIconst char\ *arg\fP można traktować jako \fIarg0\fP, \fIarg1\fP,
\&..., \fIargn\fP.  Razem opisują one listę jednego lub więcej wskaźników do
zakończonych znakiem NUL łańcuchów, reprezentujących listę argumentów
udostępnianych wykonywanemu programowi. Pierwszy argument, zgodnie z
konwencją, powinien wskazywać na nazwę pliku powiązaną z wykonywanym
plikiem. Lista argumentów \fImusi\fP być zakończona wskaźnikiem null, a
ponieważ te funkcje są funkcjami o zmiennej liczbie argumentów, wskaźnik ten
musi być rzutowany na \fI(char\ *) NULL\fP.
.PP
.\"
W odróżnienie od funkcji zawierających w nazwie \[Bq]l\[rq], poniższe
funkcje z \[Bq]v\[rq] określają argumenty wiersza poleceń wykonywanego
programu, jako wektor.
.SS "v \- execv(), execvp(), execvpe()"
Argument  \fIchar\ *const argv[]\fP jest tablicą wskaźników do zakończonych
znakami NUL łańcuchów reprezentujących listę argumentów dostępnych dla
wykonywanego programu. Pierwszy argument, zgodnie z konwencją, powinien
wskazywać na nazwę pliku powiązaną z wykonywanym plikiem. Tablica wskaźników
\fImusi\fP być zakończona wskaźnikiem null.
.SS "e \- execle(), execvpe()"
Środowisko nowego obrazu procesu podaje się za pomocą argumentu
\fIenvp\fP. Argument \fIenvp\fP jest tablicą wskaźników do zakończonych znakiem
NUL łańcuchów znaków i \fImusi\fP być zakończony wskaźnikiem null.
.PP
Wszystkie pozostałe funkcje \fBexec\fP() (które nie zawierają w przyrostku
\[Bq]e\[rq]), pobierają środowisko dla obrazu nowego procesu z zewnętrznej
zmiennej \fIenviron\fP procesu wywołującego.
.SS "p \- execlp(), execvp(), execvpe()"
Funkcje te wykonują zadania powłoki, szukając pliku wykonywalnego, jeśli
nazwa pliku nie zawiera znaku ukośnika (/). Plik jest wyszukiwany w
rozdzielonej dwukropkami liście ścieżek do katalogów podanej w zmiennej
środowiskowej \fBPATH\fP. Jeśli ta zmienna nie jest zdefiniowana, lista ścieżek
korzysta z listy domyślnej, która zawiera katalogi zwracane przez
\fIconfstr(_CS_PATH)\fP (zwykle zwraca wartość \[Bq]/bin:/usr/bin\[rq]) i być
może również bieżący katalog roboczy; więcej szczegółów w UWAGACH.
.PP
\fBexecvpe\fP() szuka programu za pomocą wartości zmiennej \fBPATH\fP ze
środowiska wywołującego, a nie z argumentu \fIenvp\fP.
.PP
Jeśli podana nazwa pliku zawiera znak ukośnika, to wartość zmiennej \fBPATH\fP
jest ignorowana i wykonywany jest plik z podanej lokalizacji.
.PP
Dodatkowo pewne błędy są traktowane w specjalny sposób.
.PP
Jeśli dostęp do pliku został zabroniony (wywołanie \fBexecve\fP(2) zakończyło
się błędem  \fBEACCES\fP), funkcje te będą przeszukiwać resztę ścieżki. Jeśli
jednak nie odnajdą innego pliku, powrócą i ustawią wartość zmiennej \fIerrno\fP
na \fBEACCES\fP.
.PP
Jeśli nagłówek nie zostanie rozpoznany (wywołanie \fBexecve\fP(2) zakończy się
błędem \fBENOEXEC\fP), funkcje te spróbują uruchomić powłokę (\fI/bin/sh\fP) ze
ścieżką do pliku jako pierwszym argumentem. (Jeśli i ta próba się nie
powiedzie, przeszukiwanie zostanie zakończone).
.PP
Wszelkie inne funkcje \fBexec\fP() (które nie zawierają \[Bq]p\[rq] w
przyrostku)  przyjmują jako swój pierwszy argument ścieżkę (względną lub
absolutną), która identyfikuje program do wykonania.
.SH "WARTOŚĆ ZWRACANA"
Funkcje \fBexec\fP() powracają tylko wtedy, gdy wystąpi błąd. Zwracana jest
wartość \-1 i ustawiana jest zmienna \fIerrno\fP, określająca rodzaj błędu.
.SH BŁĘDY
Każda z tych funkcji może zakończyć się niepowodzeniem i ustawić jako
wartość \fIerrno\fP dowolny błąd określony dla \fBexecve\fP(2).
.SH WERSJE
Funkcja \fBexecvpe\fP() pojawiła się po raz pierwszy w wersji 2.11 biblioteki
glibc.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBexecl\fP(),
\fBexecle\fP(),
\fBexecv\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
T{
\fBexeclp\fP(),
\fBexecvp\fP(),
\fBexecvpe\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne env
.TE
.hy
.ad
.sp 1
.SH STANDARDY
POSIX.1\-2001, POSIX.1\-2008.
.PP
\fBexecvpe\fP() jest rozszerzeniem GNU.
.SH UWAGI
.\" glibc commit 1eb8930608705702d5746e5491bab4e4429fcb83
Domyślna ścieżka przeszukiwana (używana, gdy środowisko nie zawiera zmiennej
\fBPATH\fP) ukazuje pewne różnice między systemami. Zwykle zawiera \fI/bin\fP i
\fI/usr/bin\fP (w tej kolejności), może też zawierać bieżący katalog roboczy. W
niektórych innych systemach, bieżący katalog roboczy występuje po \fI/bin\fP i
\fI/usr/bin\fP, co ma utrudnić ataki trojanów. Implementacja glibc przez długi
czas działała zgodnie z tradycyjnymi wartościami domyślnymi, gdy bieżący
katalog roboczy jest umieszczony na początku ścieżki przeszukiwania. Jednak
pewien refaktoring kodu, jaki miał miejsce podczas rozwoju glibc 2.24
spowodował zupełne porzucenie bieżącego katalogu roboczego z domyślnej
ścieżki przeszukiwania. Ta przypadkowa zmiana zachowania jest uważana za
dość pozytywną i nie zostanie odwrócona.
.PP
Zachowanie \fBexeclp\fP() oraz \fBexecvp\fP() w przypadku wystąpienia błędów
podczas uruchamiania pliku jest przyjęte jako tradycyjne, ale nie jest
udokumentowane przez standard POSIX. BSD (a być może także inne systemy) po
napotkaniu błędu \fBETXTBSY\fP czeka przez chwilę i próbuje ponownie. Linux
traktuje to jako błąd i powraca natychmiast.
.PP
Tradycyjnie funkcje \fBexeclp\fP() oraz \fBexecvp\fP() ignorowały wszystkie błędy
oprócz podanych powyżej oraz \fBENOMEM\fP i \fBE2BIG\fP, po których
powracały. Obecnie powracają także wtedy, gdy wystąpi dowolny błąd inny od
opisanych powyżej.
.SH USTERKI
.\" https://sourceware.org/bugzilla/show_bug.cgi?id=19534
.\"
Przed glibc 2.24, \fBexecl\fP() i \fBexecle\fP() korzystały wewnętrznie z
\fBrealloc\fP(3) dlatego nie były async\-signal\-safe, co stanowiło naruszenie
wymagań POSIX.1. Poprawiono to w glibc 2.24.
.SS "Szczegóły typowe dla architektury"
Na architekturach sparc i sparc64, \fBexecv\fP() jest udostępnione jako
wywołanie systemowe przez jądro (z prototypem ukazanym powyżej) ze względu
na kompatybilność z SunOS. Ta funkcja \fInie\fP jest wykorzystywana przez przez
funkcję opakowującą \fBexecv\fP() na tych architekturach.
.SH "ZOBACZ TAKŻE"
\fBsh\fP(1), \fBexecve\fP(2), \fBexecveat\fP(2), \fBfork\fP(2), \fBptrace\fP(2),
\fBfexecve\fP(3), \fBsystem\fP(3), \fBenviron\fP(7)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Adam Byrtek <alpha@irc.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>,
Robert Luberda <robert@debian.org>
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 .
