Pata Maagizo ya Linux - execl

Jina: execl, execlp, execle, execv, execvp - kutekeleza faili

Sahihi

#include

karibu nje ya ** **;

int execl (const char * njia , const char * hoja , ...);
int execlp ( faili char * faili , char char * arg , ...);
int execle (const char * njia , const char * hoja , ..., char * const envp []);
int execv (const char * njia , char * const argv []);
int execvp ( faili char * faili , char * const argv []);

Maelezo

Familia ya kazi ya utekelezaji inashiriki picha ya mchakato wa sasa na picha mpya ya mchakato . Kazi zilizoelezwa katika ukurasa huu wa mwongozo ni mbele ya mwisho wa kazi (2). Hoja ya awali ya kazi hizi ni njia ya faili ambayo itafanywa.

Kipengele cha * char na ellipses inayofuata katika kazi ya kutekeleza , kutekeleza , na kutekeleza inaweza kufikiria kama arg0 , arg1 , ..., argn . Wote wanaelezea orodha ya hoja moja au zaidi kwa masharti yaliyomalizika ambayo yanawakilisha orodha ya hoja inapatikana kwa mpango uliofanywa. Shauri la kwanza, kwa mkataba, lazima lielezee jina la faili lililohusishwa na faili iliyofanyika. Orodha ya hoja lazima iondolewe na pointer ya NULL .

Kazi ya kutekeleza na kutekeleza hutoa safu za maandishi kwa masharti yasiyovunjwa yaliyothibitishwa ambayo yanawakilisha orodha ya hoja inayopatikana kwa programu mpya. Shauri la kwanza, kwa mkataba, lazima lielezee jina la faili lililohusishwa na faili iliyofanyika. Mchapishaji wa salama lazima uachishwe na pointer ya NULL .

Kazi ya kutekeleza pia inafafanua mazingira ya mchakato uliofanywa kwa kufuata pointer ya NULL ambayo inachagua orodha ya hoja katika orodha ya parameter au pointer kwa safu ya hoja na parameter ya ziada. Kipengele hiki cha ziada ni safu ya maandishi kwa masharti yasiyovunjwa na haipaswi kusitishwa na pointer ya NULL . Kazi nyingine huchukua mazingira kwa ajili ya picha mpya ya mchakato kutoka karibu na mabadiliko ya nje katika mchakato wa sasa.

Baadhi ya kazi hizi zina semantics maalum.

Kazi ya execlp na execvp itarudia vitendo vya shell katika kutafuta faili inayoweza kutekelezwa ikiwa jina la faili maalum halijumuishi (/) tabia. Njia ya utafutaji ni njia iliyowekwa katika mazingira na PATH variable. Ikiwa tofauti hii haijainishwa, njia ya default ``: / bin: / usr / bin '' inatumiwa. Aidha, makosa fulani hutendewa hasa.

Ikiwa ruhusa inakataliwa kwa faili (jaribio la kutekelezwa la EACCES lilirejea), kazi hizi zitaendelea kutafuta njia zote za utafutaji. Ikiwa hakuna faili nyingine inapatikana, hata hivyo, watarudi na mabadiliko ya kimataifa yaliyowekwa kwenye EACCES .

Ikiwa kichwa cha faili haijatambui (jaribio la kutekelezwa la kurudi ENOEXEC ), kazi hizi zitafanya shell na njia ya faili kama hoja yake ya kwanza. (Ikiwa jaribio hili linashindwa, hakuna utafutaji unaotafsiriwa.)

Rejea Thamani

Ikiwa kazi yoyote ya kurudi inarudi, kosa litatokea. Thamani ya kurejea ni -1, na errno ya kimataifa ya kimataifa itawekwa ili kuonyesha dhana .