Alamin ang Linux Command - execv

execl, execlp, execle, execv, execvp - magsagawa ng isang file

Buod

# isama ang

extern char ** environ;

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

Paglalarawan ng exec Funions

Ang exec family of functions ay pumapalit sa kasalukuyang proseso ng imahe gamit ang isang bagong proseso ng imahe. Ang mga pag-andar na inilarawan sa manu-manong pahina na ito ay front-ends para sa function execve (2). (Tingnan ang manu-manong pahina upang mag- execute para sa detalyadong impormasyon tungkol sa pagpapalit ng kasalukuyang proseso.)

Ang unang argument para sa mga function na ito ay ang pathname ng isang file na kung saan ay naisakatuparan.

Ang const char * arg at kasunod na ellipses sa execl , execlp , at execle functions ay maaaring maisip na bilang arg0 , arg1 , ..., argn . Sama-sama nilalarawan nila ang isang listahan ng isa o higit pang mga payo sa mga string na tinatapos na walang bisa na kumakatawan sa listahan ng argumento na magagamit sa programang naisakatuparan. Ang unang argumento, sa pamamagitan ng kombensyon, ay dapat tumutukoy sa pangalan ng file na nauugnay sa file na isinagawa. Ang listahan ng mga argumento ay dapat na wakasan sa pamamagitan ng isang NULL na pointer.

Ang mga execv at function na execvp ay nagbibigay ng isang array ng mga payo sa null-terminated na mga string na kumakatawan sa listahan ng argumento na magagamit sa bagong programa. Ang unang argumento, sa pamamagitan ng kombensyon, ay dapat tumutukoy sa pangalan ng file na nauugnay sa file na isinagawa. Ang hanay ng mga payo ay dapat na wakasan sa pamamagitan ng isang NULL na pointer.

Tinutukoy din ng function ng execle ang kapaligiran ng proseso ng pagpapatupad sa pamamagitan ng pagsunod sa NULL na pointer na tinatapos ang listahan ng mga argumento sa listahan ng parameter o ang pointer sa argv array na may dagdag na parameter. Ang karagdagang parameter na ito ay isang hanay ng mga payo sa null-terminated strings at dapat na tapusin ng isang null pointer. Ang iba pang mga pag-andar ay kinukuha ang kapaligiran para sa bagong proseso ng imahe mula sa panlabas na variable na kapaligiran sa kasalukuyang proseso.

Ang ilan sa mga function na ito ay may espesyal na semantika.

Ang mga function execlp at execvp ay dobleng ang mga aksyon ng shell sa paghahanap para sa isang maipapatupad na file kung ang tinukoy na pangalan ng file ay hindi naglalaman ng isang slash (/) na character. Ang path ng paghahanap ay ang landas na tinukoy sa kapaligiran ng variable na PATH . Kung hindi tinukoy ang variable na ito, ang default path na ``: / bin: / usr / bin '' ay ginagamit. Bilang karagdagan, ang ilang mga error ay espesyal na itinuturing.

Kung ang pahintulot ay tinanggihan para sa isang file (ang tinangkang magpatakbo bumalik EACCES ), ang mga function na ito ay patuloy na maghanap sa natitirang bahagi ng path ng paghahanap. Kung walang iba pang mga file ay natagpuan, gayunpaman, sila ay bumalik sa global variable errno itakda sa EACCES .

Kung ang header ng isang file ay hindi kinikilala (ang tinangkang magpatupad ay nagbalik ENOEXEC ), ang mga function na ito ay magsasagawa ng shell na may path ng file bilang unang argument nito. (Kung nabigo ang pagtatangka na ito, walang karagdagang paghahanap ay tapos na.)

Ibalik ang Halaga ng mga function ng exec

Kung ang alinman sa mga pag-andar ng exec ay nagbalik, ang isang error ay mangyari. Ang halaga ng pagbalik ay -1, at ang global variable errno ay itatakda upang ipahiwatig ang error.