Õpi Linuxi käsku - execv

execl, execlp, execle, execv, execvp - faili käivitamine

Kokkuvõte

#include

extern char ** environ;

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

Täitmisfunktsioonide kirjeldus

Rakenduste täideperekond asendab praeguse protsessi pildi uue protsessi pildiga. Selles juhendis kirjeldatud funktsioonid on funktsiooni execve (2) eesmise otsa jaoks. ( Praktika väljavahetamise üksikasjaliku teabe saamiseks vt käsiraamatut.)

Nende funktsioonide esialgne argument on fail, mida tuleb täita.

Console char * arg ja järgnevad ellipsid käsklus execlp , execlp ja execle saab mõelda arg0 , arg1 , ..., argn . Koos kirjeldavad nad ühte või mitut viiteid null-lõpetatud stringidele, mis esindavad rakendusprogrammile kättesaadavat argumentide nimekirja. Esimene argument peaks üldjuhul viitama faili nimele, mis on seotud faili käivitamisega. Argumentide nimekiri peab olema tühistatud NULL-i kursoriga.

Täitmis- ja execvp- funktsioonid pakuvad null-lõpetatud stringide näpunäidete massiivi, mis esindavad uuele programmile kättesaadavat argumentide loendit. Esimene argument peaks üldjuhul viitama faili nimele, mis on seotud faili käivitamisega. Näidikute massi peab lõpetama NULL näit.

Käsulefunktsioon määrab ka käivitatava protsessi keskkonna, järgides NULL-i kursorit, mis lõpeb parameetrite loendis olevate argumentide loendist või argumendi massiivi osutiga täiendava parameetriga. See täiendav parameeter on null-lõpetatud stringide näpunäidete massiiv ning NULL- kursor peab selle lõpetama. Teised funktsioonid võtavad keskkonnale uue protsessi pildi praeguse protsessi välisest muutuja keskkonnast .

Mõnel neist funktsioonidest on spetsiifiline semantika.

Funktsioonid execlp ja execvp dubleerivad shelli toiminguid käivitatava faili otsimisel, kui määratud faili nimi ei sisalda kaldkriipsu (/) tähemärki. Otsingutee on PATHi muutuja poolt keskkonnale määratud tee. Kui seda muutujat ei ole määratud, kasutatakse vaikemarsruuti ``: / bin: / usr / bin ''. Lisaks käsitletakse teatavaid vigu spetsiaalselt.

Kui failile luba jäetakse keelduma (katse käivitamine tagastab EACCES ), jätkavad need funktsioonid otsingu ülejäänud otsingu otsimist. Kui ühtegi muud faili ei leita, siis nad naasevad globaalse muutujaga errno, mis on määratud EACCES-ile .

Kui faili päist ei tuvastata (katse käivitada tagastab ENOEXEC ), täidavad need funktsioonid esialgse argumendina shelli faili tee. (Kui see katse ebaõnnestub, siis täiendavat otsingut ei tehta.)

Lähtefunktsioonide tagasiväärtus

Kui mis tahes exec- funktsiooni tagastab, ilmnes viga. Tagastatav väärtus on -1 ja globaalne muutuja errno määratakse vea näitamiseks.