Skip to main content

Alles over de opdracht Linux / Unix: execvp

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Juni- 2026)

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Juni- 2026)
Anonim

Deexec functiefamilie vervangt het huidige procesbeeld door een nieuw procesbeeld. De functies die hier worden beschreven, zijn front-ends voor de functieexecve(2).

Het eerste argument voor deze functies is de padnaam van een bestand dat moet worden uitgevoerd.

De const char * arg en volgende ellipsen in deexecl, execlp, enexecle functies kunnen worden gezien als arg0 , arg1 , …, argn . Samen beschrijven ze een lijst van een of meer verwijzingen naar null-terminated strings die de argumentlijst vertegenwoordigen die beschikbaar is voor het uitgevoerde programma. Het eerste argument moet bij conventie verwijzen naar de bestandsnaam die is gekoppeld aan het bestand dat wordt uitgevoerd. De lijst met argumenten moet worden beëindigd door eenNUL wijzer.

Deexecv enexecvp functies bieden een reeks verwijzingen naar null-terminated strings die de argumentlijst vertegenwoordigen die beschikbaar is voor het nieuwe programma. Het eerste argument moet bij conventie verwijzen naar de bestandsnaam die is gekoppeld aan het bestand dat wordt uitgevoerd. De reeks aanwijzers moet worden beëindigd door eenNUL wijzer.

Deexecle functie specificeert ook de omgeving van het uitgevoerde proces door deNULpointer die de lijst met argumenten in de parameterlijst of de pointer naar de argv-array met een extra parameter beëindigt. Deze extra parameter is een array van verwijzingen naar null-terminated strings en moet worden beëindigd door eenNUL wijzer. De andere functies nemen de omgeving voor het nieuwe procesbeeld van de externe variabele environ in het huidige proces.

Sommige van deze functies hebben een speciale semantiek.

De functiesexeclp enexecvp dupliceert de acties van de shell bij het zoeken naar een uitvoerbaar bestand als de opgegeven bestandsnaam geen schuine streep (/) bevat. Het zoekpad is het pad dat door de omgeving is opgegeven in de omgevingPAD variabel. Als deze variabele niet is opgegeven, wordt het standaardpad ``: / bin: / usr / bin '' gebruikt. Bovendien worden bepaalde fouten speciaal behandeld.

Als toestemming wordt geweigerd voor een bestand (de pogingexecve teruggekeerdEACCES), blijven deze functies de rest van het zoekpad doorzoeken. Als er echter geen ander bestand wordt gevonden, keren ze terug met de globale variabele errno ingesteld opEACCES.

Als de header van een bestand niet wordt herkend (de pogingexecve teruggekeerdENOEXEC), zullen deze functies de shell uitvoeren met het pad van het bestand als eerste argument. (Als deze poging mislukt, is verder zoeken niet voltooid.)

Winstwaarde

Als een van deexec functies retourneert, is er een fout opgetreden. De geretourneerde waarde is -1 en de globale variabele errno zal worden ingesteld om de fout aan te geven.

Belangrijk: Gebruik de man commando ( % man ) om te zien hoe een opdracht wordt gebruikt op uw specifieke computer.

Naam

execl, execlp, execle, execv, execvp - voer een bestand uit

Korte inhoud

#include

extern char ** environment;

int execl (const char * pad , const char * arg , …); int execlp (const char * het dossier , const char * arg , …); int execle (const char * pad , const char * arg , …, char * const envp ); int execv (const char * pad , char * const argv ); int execvp (const char * het dossier , char * const argv );