ሊነክስ / ዩኒክስ ትእዛዝ: execvp

ስም

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 ነው, እና ስህተቱን ለማመልከት ዓለም አቀፉ ተለዋዋጭነት ስህተት ነው የሚቀናበረው .

ጠቃሚ ማሳሰቢያ: በኮምፒተርዎ ውስጥ እንዴት አንድ ትዕዛዝ እንዴት ጥቅም ላይ እንደዋለ ለመመልከት የሰውውን ትዕዛዝ ( % man ) ይጠቀሙ.