Linux / Unix հրաման: execvp

Անուն

execl, execlp, execle, execv, execvp - ֆայլը կատարել

Սինոփսիս

#include

extern char ** միջավայրում;

int execl (const char * path , const char * arg , ...);
int execlp (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 []);

Հրամանատարության ակնարկ

Գործառույթների exec ընտանիքը փոխարինում է ընթացիկ գործընթացի պատկերը նոր գործընթացի պատկերով: Այստեղ նկարագրված գործառույթներն ընդգրկում են ֆունկցիայի իրականացման համար (2):

Այս գործառույթների նախնական փաստարկը ֆայլի ուղին է, որը պետք է կատարվի:

The const char * arg եւ հետագա ellipses է execl , execlp եւ execle գործառույթները կարող են մտածել որպես arg0 , arg1 , ..., argn . Միասին նրանք նկարագրում են մեկ կամ ավելի ցուցիչների ցուցակը, null-terminated տողերի համար, որոնք ներկայացնում են կատարված ծրագրի համար մատչելի փաստարկների ցուցակը: Առաջին փաստարկը, ըստ կոնվենցիայով, պետք է մատնանշի ֆայլի հետ կապված ֆայլի անվանումը : Արժեթղթերի ցանկը պետք է դադարեցվի NULL ցուցիչի կողմից:

Execv- ի եւ execvp- ի գործառույթները ապահովում են մի շարք ցուցիչների, նոր ծրագրի համար մատչելի փաստարկների ցանկը ներկայացնող null-terminated տողերը: Առաջին փաստարկը, ըստ կոնվենցիայով, պետք է մատնանշի ֆայլի հետ կապված ֆայլի անվանումը: Ցուցանիշների զանգվածը պետք է դադարեցվի NULL ցուցիչով:

Կատարման գործառույթը նաեւ սահմանում է կատարված գործընթացի միջավայրը, հետեւելով NULL ցուցիչին, որը դադարեցնում է պարամետրերի ցուցակի մեջ փաստարկների ցանկը կամ լրացուցիչ պարամետով argv զանգվածի ցուցիչը: Այս լրացուցիչ պարամետրը null-terminated տողերի ցուցիչների զանգվածն է եւ պետք է դադարեցվի NULL ցուցիչի կողմից: Մյուս գործառույթները շրջակա միջավայրն են `ընթացիկ գործընթացում արտաքին փոփոխական միջավայրում նոր գործընթացի պատկերը ձեւավորելու համար:

Այս գործառույթներից մի քանիսը ունեն հատուկ սեմինիկա:

Ֆունկցիաների execlp- ը եւ execvp- ը կրկնօրինակում են սխալի գործողությունները կատարվող ֆայլի որոնման մեջ, եթե նշված ֆայլի անունը չի պարունակում սեղմ (/) բնույթ: Որոնման ուղին PATH փոփոխականով շրջակա միջավայրում նշված ուղին է: Եթե ​​այս փոփոխականը նշված չէ, ապա օգտագործվում է `` `/ bin: / usr / bin 'կանխադրված ուղին: Բացի այդ, որոշ սխալներ վերաբերվում են հատուկ:

Եթե ​​թույլտվությունը մերժվում է ֆայլի համար ( փորձարկված վերադարձված EACCES- ի վերագործարկումը ), այս գործառույթները կշարունակեն փնտրել որոնման մյուս ճանապարհը: Եթե ​​որեւէ այլ ֆայլ չի գտնվել, ապա նրանք կվերադառնան EACCES- ի գլոբալ փոփոխական errno- ով :

Եթե ֆայլի վերնագիրը չի ճանաչվում ( փորձարկվել է վերադարձված ENOEXEC- ը ), ապա այդ գործառույթները ֆայլը կուղարկեն որպես առաջին փաստարկը: (Եթե այդ փորձը ձախողվի, հետագա որոնումներ չեն կատարվում):

Վերադարձի արժեքը

Եթե exec գործառույթներից որեւէ մեկը վերադառնա, սխալ տեղի կունենա: Վերադարձի արժեքը -1 է, եւ գլոբալ փոփոխական errno- ը կկիրառվի սխալը նշելու համար:

Կարեւոր է. Օգտագործեք հրամանատարությունը ( % մարդ ), որպեսզի տեսնեք, թե ինչպես է օգտագործվում հրամանը ձեր որոշակի համակարգչում: