የሊኑክስ ትዕዛዝ ይወቁ - execl

ስም: execl, execlp, execle, execv, execvp - ፋይልን ያስፈጽማል

ማጠቃለያ

#include ን ያካትቱ

ከጫፍ ውጫዊ ** ሁኔታ;

int execl (const char * path , const char * arg , ...);
int execlp (const char * ፋይል , const char * arg , ...);
int execle (const ካር * ዱካ , const char * arg , ..., char * const envp []);
int execv (const char * path , char * const argv []);
int execvp (const char * ፋይል , char * const argv []);

መግለጫ

Exec የቤተሰብ ተግባራት የአሁኑን ሂደት ምስል በአዲስ የአሰራር ምስል ይተካዋል. በዚህ ማኑዋል ገፅ ላይ የተዘረዘሩት ተግባራት ለ " execve" (2) ቀዳዳዎች ናቸው. የእነዚህ ተግባራት መነሻ ክርክር የሚከናወነው የፋይሎች የቅደም ተከተል ስም ነው.

በ < execl , execlp እና execle ተግባራት < const char * arg / እና ከዚያ በኋላ ያሉ ኤሊፕስዶች እንደ arg0 , arg1 , ..., argn ብለው ያስባሉ . አንድ በአንድ ወይም ከዚያ በላይ ጠቋሚዎች በተጠናቀቀው ፕሮግራም ውስጥ የቀረቡትን የክርሽንን ዝርዝር የሚወክሉ ባዶ የተቋረጡ ሕብረቁምፊዎች ዝርዝር በአንድ ላይ ያብራራሉ. የመጀመሪያው ስምምነት, በስምምነቱ, ከተፈጸመው ፋይል ጋር የሚዛመድ የፋይል ስም መጥቀስ አለበት. የነጋሪ እሴቶች ዝርዝር በ NULL ጠቋሚ መቋረጥ አለበት .

execv እና execvp ተግባራቶቹ በአዲሱ ፕሮግራም ላይ የቀረቡትን የክርሽንን ዝርዝር የሚወክሉ ባዶ የተቋረጡ ሕብረቁምፊዎች ያቀርባሉ. የመጀመሪያው ስምምነት, በስምምነቱ, ከተፈጸመው ፋይል ጋር የሚዛመድ የፋይል ስም መጥቀስ አለበት. የጠቋሚዎች አደራደር በ NULL ጠቋሚ መቋረጥ አለበት .

execle ተግባር በተጨማሪ በ NULL ጠቋሚን በመጠቀም የክርክር ዝርዝር ውስጥ ያለውን የጭብል ዝርዝር ዝርዝር ያበቃል ወይም ደግሞ ወደ ሌላ ተጨማሪ ግቤት (ኤች. ይህ ተጨማሪ መስፈርት ዜሮ-የተቋረጡ ሕብረቁምፊዎች ጠቋሚ ድርድር ሲሆን በ NULL ጠቋሚ መቋረጥ አለበት . ሌሎቹ ተግባራት አሁን ባለው ሂደት ውስጥ ለአዲሱ ምስል ምስል ከውጭ ተለዋዋጭ ሁኔታ አካባቢን ይወስዳሉ.

ከእነዚህ አገልግሎቶች ውስጥ አንዳንዶቹ ልዩ ጽሁፎች አሏቸው.

የተጠቀሰው የፋይሉ ስም የራስ -ቁምፊ (/) ቁምፊ ከሌለው የ execlp እና execvp ያሉ ተግባራትን (executable) ፋይል በመፈለግ ቀስ በቀስ የዶክተሩን እርምጃ ይደግፋል . የፍለጋ መንገድ በ PATH ተለዋዋጭ በአከባቢ የተገለፀው ዱካ ነው. ይህ ተለዋዋጭ ካልተገለጸ ነባሪው ``: / bin: / usr / bin '' ስራ ላይ ይውላል. በተጨማሪም, አንዳንድ ስህተቶች በተናጠል ይጠበባሉ.

ለአንድ ፋይል ውድቅ ከተደረገ (ሙከራው ተፈጻሚነት EACCES ን መልሷል ), እነዚህ ተግባራት ቀሪውን የፍለጋ ዱካ ፍለጋ ላይ ይቀጥላሉ. ምንም ሌላ ፋይል ካልተገኘ ግን, ከአለም አቀፉ ተለዋዋጭ ስሕተት ጋር ወደ EACCES የተመለሰ ይሆናል .

የፋይሉ ራስጌ የማይታወቅ ከሆነ (የ ENOEXEC ን የተመለከው ሙከራ ተፈፀመ ), እነዚህ ተግባራት የሂደቱን ዱካ ከፋይሉ ዱካ እንደ የመጀመሪያ ነጋሪ እሴቱ ያስፈጽማሉ. (ይህ ሙከራ ካልተሳካ ተጨማሪ ፍለጋ አይከናወንም.)

እሴት ይመልሱ

ከሂደቱ ስራዎች መካከል ማንኛቸውም ከተመለሱ , አንድ ስህተት ተከስቷል. የመመለሻ እሴትው -1 ነው, እና ስህተቱን ለማመልከት ዓለም አቀፉ ተለዋዋጭነት ስህተት ነው የሚቀናበረው .