.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" @(#)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 .\" Added note on casting NULL .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EXEC 3 "2. August 2019" GNU Linux\-Programmierhandbuch .SH BEZEICHNUNG execl, execlp, execle, execv, execvp, execvpe \- führt eine Datei aus .SH ÜBERSICHT .nf \fB#include \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[],\fP \fB char *const \fP\fIenvp\fP\fB[]);\fP .fi .PP .RS -4 Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP \fBexecvpe\fP(): _GNU_SOURCE .SH BESCHREIBUNG Die \fBexec\fP()\-Funktionsfamilie ersetzt den aktuellen Programmcode im Speicher mit einem neuen Prozessabbild. Die in dieser Handbuchseite beschriebenen Bibliotheksfunktionen sind über diejenigen der Systemfunktion \fBexecve\fP(2) gelegt. (Siehe die Handbuchseite von \fBexecve\fP(2) für weitere Details über das Ersetzen des aktuellen Prozessabbilds.) .PP Das erste Argument dieser Funktionen ist der Name der Datei, die ausgeführt werden soll. .PP .\" Die Funktionen können, basierend auf den Buchstaben, die dem Namensanfang »exec« folgen, gruppiert werden. .SS "l \- execl(), execlp(), execle()" Der Ausdruck \fIconst char\ *arg\fP und die nachfolgenden Auslassungspunkte (»…«) sind als eine Liste mit einer unbestimmten Anzahl von Parametern \fIarg0\fP, \fIarg1\fP, …, \fIargn\fP zu verstehen. Zusammen stellen sie eine Liste mit einem oder mehreren Zeigern auf mit einem Nullbyte (»\e0«) abgeschlossene Zeichenketten dar, die dem aufgerufenen Programm als Argumentliste verfügbar ist. Der erste Eintrag sollte konventionsgemäß ein Zeiger auf den Dateinamen des aufgerufenen Programms sein. Die Parameterliste \fImuss\fP mit einem Nullzeiger abgeschlossen werden und weil es variadische Funktionen sind, muss für diesen Zeiger eine Typumwandlung (cast) zu \fI(char\ *) NULL\fP durchgeführt werden. .PP .\" Im Gegensatz zu den »l«\-Funktionen legen die »v«\-Funktionen (unten) die Befehlszeilenargumente des ausgeführten Programmes als Vektor fest. .SS "v \- execv(), execvp(), execvpe()" Die Argument \fIchar\ *const argv[]\fP ist ein im Folgeprogramm verfügbares Feld von Zeigern auf mit einem Nullbyte abgeschlossene Zeichenketten, die die Argumentenliste darstellen. Das erste Argument sollte konventionsgemäß auf den Namen der auszuführenden Datei weisen. Der Feld von Zeigern \fImuss\fP mit einem Nullzeiger als letztem Eintrag abgeschlossen werden. .SS "e \- execle(), execvpe()" Die Umgebung für den Aufrufenden wird mittels des Arguments \fIenvp\fP festgelegt. Das Argument \fIenvp\fP ist ein Feld von Zeigern auf mit Nullbytes abgeschlossenen Zeichenketten und \fImuss\fP mit einem Nullzeiger als letztem Eintrag abgeschlossen werden. .PP Alle anderen \fBexec\fP()\-Funktionen (die kein »e« in der Endung enthalten) übernehmen die Umgebungsvariablen für den neuen Prozess von der externen Variablen \fIenviron\fP im aufrufenden Prozess. .SS "p \- execlp(), execvp(), execvpe()" Diese Funktionen suchen ebenso wie die Shell nach einem ausführbaren Programm, wenn der angegebene Dateiname keinen Schrägstrich (/) enthält. Die Datei wird in der durch Doppelpunkte getrennten Liste von Verzeichnis\-Pfadnamen in der Umgebungsvariablen \fBPATH\fP gesucht. Wenn diese Variable nicht definiert ist, ist die Pfadliste standardmäßig eine Liste, die die von \fIconfstr(_CS_PATH)\fP (das typischerweise den Wert »/bin:/usr/bin« zurückliefert) zurückgelieferten Verzeichnisse enthält und mglicherweise auch das aktuelle Arbeitsverzeichnis. Lesen Sie ANMERKUNGEN für weitere Details. .PP Falls der angegebene Dateiname einen Schrägstrich enthält, wird \fBPATH\fP ignoriert und die Datei mit dem angegebenen Pfadnamen ausgeführt. .PP Zusätzlich werden bestimmte Fehler speziell behandelt. .PP Falls die Ausführung einer gefundenen Datei verweigert wird (die versuchte Ausführung von \fBexecve\fP(2) führte zum Fehler \fBEACCES\fP), werden diese Funktionen im restlichen Suchpfad weitersuchen. Wenn aber keine andere Datei gefunden wird, kehren diese Funktionen zurück und setzen \fIerrno\fP auf \fBEACCES\fP. .PP Wenn der Header einer Datei nicht erkannt wird (die versuchte Ausführung von \fBexecve\fP(2) führte zum Fehler \fBENOEXEC\fP), starten diese Funktionen die Shell (\fI/bin/sh\fP) mit dem Pfadnamen der Datei als erstes Argument. (Wenn dieser Versuch fehlschlägt, wird die Suche abgebrochen.) .PP Alle anderen \fBexec\fP()\-Funktionen (die kein »p« in der Endung enthalten) akzeptieren als ihr erstes Argument einen (relativen oder absoluten) Pfadnamen, der das auszuführende Programm identifiziert. .SH RÜCKGABEWERT Die \fBexec\fP()\-Funktionen kehren nur in das aufrufende Programm zurück, wenn ein Fehler aufgetreten ist. Der Rückgabewert ist \-1 und \fIerrno\fP wird auf die entsprechende Fehlerkennung gesetzt. .SH FEHLER Alle diese Funktionen können fehlschlagen und \fIerrno\fP auf jeden möglichen Fehler setzen, der für \fBexecve\fP(2) angegeben ist. .SH VERSIONEN Die Funktion \fBexecvpe\fP() kam erstmals in Glibc 2.11 vor. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbw29 lb lb l l l. Schnittstelle Attribut Wert T{ \fBexecl\fP(), \fBexecle\fP(), \fBexecv\fP() T} Multithread\-Fähigkeit MT\-Safe T{ \fBexeclp\fP(), \fBexecvp\fP(), \fBexecvpe\fP() T} Multithread\-Fähigkeit MT\-Safe env .TE .SH "KONFORM ZU" POSIX.1\-2001, POSIX.1\-2008. .PP Die Funktion \fBexecvpe\fP() ist eine GNU\-Erweiterung. .SH ANMERKUNGEN .\" glibc commit 1eb8930608705702d5746e5491bab4e4429fcb83 Der Standardsuchpfad (wird verwandt, wenn die Umgebung nicht die Variable \fBPATH\fP enthält), zeigt zwischen Systemen einige Variationen. Im Allgemeinen enthält es \fI/bin\fP und \fI/usr/bin\fP (in dieser Reihenfolge) und kann auch das aktuelle Arbeitsverzeichnis enthalten. Auf einigen Systemen ist das aktuelle Arbeitsverzeichnis nach \fI/bin\fP und \fI/usr/bin\fP enthalten, um Trojanische Pferde zu vermeiden. Die Glibc\-Implementierung folgte lange der traditionellen Vorgabe, bei der das aktuelle Arbeitsverzeichnis am Anfang des Suchpfades enthalten ist. Aufgrund einiger Code\-Überarbeitungen während der Entwicklung der Glibc 2.24 wurde das aktuelle Arbeitsverzeichnis aus dem Standard\-Suchpfad komplett entfernt. Diese versehentliche Verhaltensänderung wird leicht nützlich eingeschätzt und wird nicht zurückgenommen. .PP Das Fehlerverhalten von \fBexeclp\fP() und \fBexecvp\fP() beim Versuch Programme zu starten ist historische Praxis und traditionell undokumentiert. Daher ist dieses Verhalten auch nicht durch den POSIX\-Standard spezifiziert. BSD (und möglicherweise andere Systeme) schlafen automatisch und wiederholen den Versuch, wenn \fBETXTBSY\fP angetroffen wird. Linux behandelt es wie einen harten Fehler und kehrt sofort zurück. .PP Traditionell ignorierten die Funktionen \fBexeclp\fP() und \fBexecvp\fP() alle Fehler bis auf die oben beschriebenen sowie \fBENOMEM\fP und \fBE2BIG\fP, bei deren Auftreten sie ins Hauptprogramm zurückkehrten. Sie kehren jetzt ins Hauptprogramm zurück, wenn ein anderer Fehler als die oben beschriebenen auftritt. .SH FEHLER .\" https://sourceware.org/bugzilla/show_bug.cgi?id=19534 .\" Vor Glibc 2.24 verwandten \fBexecl\fP() und \fBexecle\fP() intern \fBrealloc\fP(3) und waren daher nicht asynchron\-signal\-sicher. Dies verletzte die Anforderungen von POSIX.1. Dies wurde in Glibc 2.24 korrigiert. .SS "Architekturspezifische Details" Unter Sparc und Sparc64 wird \fBexecv\fP() zur Kompatibilität mit SunOS durch den Kernel als ein Systemaufruf (mit dem oben gezeigten Prototypen) bereitgestellt. Diese Funktion wird durch den \fBexecv\fP()\-Wrapper auf diesen Architekturen \fInicht\fP eingesetzt. .SH "SIEHE AUCH" \fBsh\fP(1), \fBexecve\fP(2), \fBexecveat\fP(2), \fBfork\fP(2), \fBptrace\fP(2), \fBfexecve\fP(3), \fBsystem\fP(3), \fBenviron\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können, sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze , Roland Krause , Martin Eberhard Schauer und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .