Linux Command-execl-ны үйреніңіз

Аты: execl, execlp, execle, execv, execvp - файлды орындаңыз

Синопсис

#include

extern char ** ортасы;

int execl (const char * жол , const char * arg , ...);
int execlp (const char * файл , const char * arg , ...);
int execle (const char * жол , const char * arg , ..., char * const envp []);
int execv (const char * жол , char * const argv []);
int execvp (const char * файл , char * const argv []);

Сипаттама

Функциялардың exec отбасы ағымдық процесс бейнесін жаңа процесс бейнемен ауыстырады. Осы нұсқаулықта сипатталған функциялар функцияның алдыңғы жақтары болып табылады (2). Бұл функциялардың алғашқы дәлелі орындалатын файлдың жолының атауы болып табылады.

Const char * arg және execl , execlp және execle функцияларындағы келесі эллипс arg0 , arg1 , ..., argn деп санауға болады . Олар бірлесіп орындалатын бағдарламада қол жетімді дәлелдер тізімін білдіретін нөлдік аяқталған жолдарға арналған бір немесе бірнеше көрсеткіштердің тізімін сипаттайды. Бірінші аргумент, конвенция бойынша, орындалатын файлмен байланысты файл атауын көрсетуге тиіс. Дәлелдер тізімі NULL көрсеткіші арқылы тоқтатылуы керек .

Execv және execvp функциялары жаңа бағдарлама үшін қол жетімді дәлелдер тізімін білдіретін нөлден кейінгі жолдарға көрсеткіштің жиымын береді. Бірінші аргумент, конвенция бойынша, орындалатын файлмен байланысты файл атауын көрсетуге тиіс. Көрсеткіштердің жиымы NULL көрсеткіші арқылы тоқтатылуы керек .

Орындау функциясы, сондай-ақ, параметр тізіміндегі аргументтер тізімін немесе қосымша параметрмен argv жиымына сілтегішті тоқтататын NULL көрсеткішін орындау арқылы орындалған үрдістің ортасын анықтайды. Бұл қосымша параметр null-terminated strings үшін көрсеткіштердің массиві болып табылады және NULL көрсеткіші арқылы тоқтатылуы керек . Басқа функциялар ағымдағы үдерістегі сыртқы ауыспалы ортадан жаңа үрдіс бейнесі үшін ортаны қабылдайды.

Осы функциялардың кейбіреулері арнайы семантикаға ие.

Execlp және execvp функциялары көрсетілген файл атауында slash (/) таңбасы болмаса, орындалатын файлды іздеуде қабықтың әрекеттерін қайталайды. Іздеу жолдары PATH айнымалысы бойынша ортада көрсетілген жол. Бұл айнымалы мән көрсетілмесе, әдепкі жол ``: / bin: / usr / bin 'қолданылады. Сонымен қатар, кейбір қателер арнайы қарастырылады.

Егер файлға рұқсат берілмеген болса (қайтарылған EACCES әрекеті), бұл функциялар іздеу жолының қалғанын іздеуді жалғастырады. Егер басқа ешқандай файл табылмаса, олар EACCES-ге орнатылған errno жаһандық айнымалы мәнімен бірге оралады.

Егер файлдың үстіңгі деректемесі танылмаса (қайтарылған ENOEXEC әрекеті орындалса ), бұл функциялар қабығы файлдың жолымен бірінші аргумент ретінде орындалады. (Егер бұл әрекет сәтсіз болса, қосымша іздеу жүргізілмейді.)

Қайтару мәні

Егер exec функцияларының кез келгені қайтарылса, қате пайда болады. Қайтар- мағына -1, ал ғаламдық айнымалы errno қатені көрсету үшін орнатылады.