Komanda Linux / Unix: execvp

emër

execl, execlp, execle, execv, execvp - ekzekutuar një skedar

përmbledhje

#include

jashtme char ** mjedis;

int execl (const char * rruga , const char * arg , ...);
int execlp (const char * file , const char * arg , ...);
int execle (const char * rruga , const char * arg , ..., char * const envp []);
int execv (const char * rruga , char * const argv []);
int execvp (const char * skedar , char * const argv []);

Përmbledhje e Komandës

Familja exec e funksioneve zëvendëson imazhin aktual të procesit me një imazh të ri të procesit. Funksionet e përshkruara këtu janë skajet e përparme për funksionin execve (2).

Argumenti fillestar për këto funksione është emri i një skedari që duhet të ekzekutohet.

Karakteristika * arg dhe ellipset pasuese në funksionet execl , execlp dhe execle mund të mendohet si arg0 , arg1 , ..., argn . Së bashku ata përshkruajnë një listë të një ose më shumë lajmërimeve për vargjet e mbyllura pa afat që përfaqësojnë listën e argumenteve në dispozicion të programit të ekzekutuar. Argumenti i parë, sipas konventës, duhet të tregojë emrin e skedarit të lidhur me skedarin që ekzekutohet. Lista e argumenteve duhet të përfundojë me një tregues NULL .

Funksionet execv dhe execvp ofrojnë një sërë udhëzuesish për vargjet e mbyllura pa fund që përfaqësojnë listën e argumenteve në dispozicion të programit të ri. Argumenti i parë, sipas konventës, duhet të tregojë emrin e skedarit të lidhur me skedarin që ekzekutohet. Grupi i pointers duhet të përfundojë me një tregues NULL .

Funksioni execle gjithashtu përcakton mjedisin e procesit të ekzekutuar duke ndjekur treguesin NULL që përfundon listën e argumenteve në listën e parametrave ose treguesin në argjinën argv me një parametër shtesë. Ky parametër shtesë është një grup orientuesish për tituj të mbyllur pa fund dhe duhet të përfundojë me një tregues NULL . Funksionet e tjera marrin mjedisin për imazhin e procesit të ri nga mjedisi i ndryshueshëm i jashtëm në procesin aktual.

Disa nga këto funksione kanë semantikë të veçantë.

Funksionet execlp dhe execvp do të kopjojnë veprimet e skedarit në kërkim të një skedari të ekzekutueshëm nëse emri i skedarit nuk përmban një karakter të prerjes (/). Rruga e kërkimit është rruga e specifikuar në mjedis nga variabli PATH . Nëse kjo variabël nuk është specifikuar, përdoret shtegu i parazgjedhur ``: / bin: / usr / bin ''. Përveç kësaj, gabime të caktuara trajtohen posaçërisht.

Nëse lejohet leja për një skedar ( ekzekutimi i tentuar i kthyer EACCES ), këto funksione do të vazhdojnë të kërkojnë pjesën tjetër të rrugës së kërkimit. Nëse asnjë skedar tjetër nuk gjendet, megjithatë, ata do të kthehen me variablën globale errno të vendosur në EACCES .

Nëse header i një skedari nuk është i njohur (tentativë execve kthyer ENOEXEC ), këto funksione do të ekzekutojë shell me rrugën e file si argumentin e saj të parë. (Nëse kjo përpjekje dështon, nuk bëhet asnjë kërkim i mëtejshëm.)

Vlera e Kthimit

Nëse ndonjë nga funksionet e ekzekutimit kthehet, do të ketë ndodhur një gabim. Vlera e kthimit është -1, dhe vargu global errno do të vendoset për të treguar gabimin.

E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.