Linux විධානය ඉගෙන ගන්න - execv

execl, execlp, execle, execv, execvp - ගොනුවක් ක්රියාත්මක කරන්න

සාරාංශය

#include

බාහිර චරිතය ** පරිසරය;

int excel (const char * path , const char * arg , ...);
int excellp (const char * ගොනුව , const char * arg , ...);
int execle (const char * path , const char * arg , ..., char * const envp []);
int execv (const char * path , char * const argv []);
int execvp (const char * ගොනුව , char * const argv []);

කාර්යයන් පිළිබඳ විස්තරය

ක්රියාකාරී පවුල්වල ක්රියාකාරිත්වයේ වර්තමාන ක්රියාවලියේ රූපය නව ක්රියාවලියක රූපයක් මඟින් ප්රතිස්ථාපනය වේ. මෙම අත්පොතෙහි විස්තර කර ඇති කර්තව්යයන් (2) ක්රියාත්මක කිරීම සඳහා ඉදිරිපස-අන්තයන් වේ. (වත්මන් ක්රියාවලිය ආදේශ කිරීම පිළිබඳව සවිස්තරාත්මක තොරතුරු සඳහා උපරිම කිරීම සඳහා අත්පොත බලන්න.)

මෙම කර්තව්යයන් සඳහා මූලික තර්කයක් වන්නේ ක්රියාත්මක වීමට නියමිත ගොනුවේ නමකි.

Const char * arg සහ execl , execlp , and execle කාර්යයන් තුල ඊලිප්පීස් නම් arg0 , arg1 , ..., argn ලෙස සැලකිය හැකිය . එකට එකතු කරන ලද වැඩසටහනට ලබා ගත හැකි විචල්ය ලැයිස්තුව නිරූපනය කරන null-terminated string to one pointers එකක් හෝ කිහිපයක් ලැයිස්තුවක් විස්තර කරයි. සම්මුතිය අනුව පළමු තර්කය, ක්රියාත්මක කරන ගොනුව සමඟ සම්බන්ධ වන ගොනු නාමයට යොමු කළ යුතුය. පරාමිතීන් ලැයිස්තුව ලැයිස්තුගත කිරීමෙන් NULL අවලංගු කළ යුතුය.

Execv සහ execvp කාර්යයන් නව වැඩසටහනට ලබා ගත හැකි විචල්ය ලැයිස්තු නියෝජනය කරන null-terminated strings සඳහා දර්ශක මාලාවක් සපයයි. සම්මුතිය අනුව පළමු තර්කය, ක්රියාත්මක කරන ගොනුව සමඟ සම්බන්ධ වන ගොනු නාමයට යොමු කළ යුතුය. සූචක සමූහයක් NULL දර්ශකය මගින් අවසන් කළ යුතුය.

ශ්රේණිගත කිරීමේ කාර්යය විසින් ක්රියාත්මක කරන ලද ක්රියාවලියේ පරිසරය, පරාමිති ලැයිස්තුවේ තර්ක ලැයිස්තුවේ හෝ අග්රව් අරාව වෙත අභිප්රේතයක් වන අතිරේක පරාමිතියක් මඟින් අග්රස්ථ ලැයිස්තුවෙන් අවසන් වන NULL දර්ශකය අනුගමනය කිරීමෙන්. මෙම අතිරේක පරාමිතිය යනු null-terminated string සඳහා දර්ශක සමූහයක් වන අතර NULL දර්ශකය මඟින් එය අවසන් කළ යුතුය. අනෙකුත් කාර්යයන් වර්තමාන ක්රියාවලිය තුළ බාහිර විචල්ය පරිසරය සිට නව ක්රියාකාරී අනුරුව සඳහා පරිසරය ගෙන එයි.

මෙම කාර්යයන්ගෙන් සමහරක් විශේෂිත අර්ථකථනයක් ඇත.

Execlp සහ execvp යන කර්නලයන් මඟින් අක්ෂර වින්යාස (/) අක්ෂරයක් අඩංගු නොවන ගොනු නාමයක් නොමැති නම්, ක්රියාත්මක කළ හැකි ගොනුවක් සෙවීමෙහිදී ශෙලලයක ක්රියා අනුපිටපත් කරනු ලැබේ. සෙවුම් මාර්ගය යනු PATH විචල්යය මඟින් පරිසරයේ සඳහන් වන මාර්ගයයි. මෙම විචල්යය නිශ්චය කර නොමැතිනම්, පෙරනිමි මංපෙත් ``: / bin: / usr / bin '' භාවිතා වේ. මීට අමතරව සමහර දෝෂ විශේෂිතව සැලකිලිමත් වේ.

ගොනුවක් සඳහා අවසරය ලබා නොදේ නම් (ආපසු EACCES නැවත ක්රියාත්මක කිරීමට උත්සහ දැරූ ප්රයත්නය ), මෙම කාර්යයන් සෙවීමේ මාර්ගයේ ඉතිරි සෙවීම සොයනු ඇත. වෙනත් ගොනුවක් සොයාගත නොහැකි වුවද, ඔවුන් ගෝලීය විචල්යය errno EACCES වෙත යොමු කරනු ඇත.

ගොනුවේ ශීර්ෂකය හඳුනා නොගන්නේ නම් ( ENOEXEC නැවත ක්රියාත්මක කිරීමට උත්සහ කිරීම ) නම්, මෙම කාර්යයන් ගොනුවේ මාවතේ මුල්ම තර්කය ලෙස shell එක ක්රියාත්මක කරයි. (මෙම උත්සාහය අසාර්ථක වුවහොත් තවදුරටත් වැඩිදුර සෙවුමක් සිදු නොවේ.)

ක්රියාත්මක කිරීමේ කාර්යයේ ප්රතිලාභ අගය

උපරිම කාර්යයන්ගෙන් යම් ප්රතිලාභයක් ලැබුනේ නම්, දෝෂයක් සිදුවනු ඇත. ආපසු ලැබෙන අගය -1, සහ දෝෂය පෙන්නුම් කිරීමට ගෝලීය විචල්යය errno වේ.