Linux Komutunu Öğrenin - execv

execl, execlp, execle, execv, execvp - bir dosyayı yürütün

özet

#include

extern char ** ortamı;

int execl (const char * yolu , const char * arg , ...);
int execlp (const char * dosya , const char * arg , ...);
int execle (const char * yolu , const char * arg , ..., char * const envp []);
int execv (const char * yolu , char * const argv []);
int execvp (const char * dosyası , char * const argv []);

Exec işlevinin açıklaması

Exec ailesi, mevcut işlem görüntüsünü yeni bir işlem görüntüsüyle değiştirir. Bu kılavuz sayfasında açıklanan işlevler, yürütme işlevi için ön uçlardır (2). (Mevcut işlemin değiştirilmesiyle ilgili ayrıntılı bilgi için yürütme kılavuzuna bakın.)

Bu işlevlerin ilk argümanı, yürütülecek olan dosyanın yol adıdır.

Const char * arg ve execlp , execlp ve execle fonksiyonlarındaki elipsler arg0 , arg1 , ..., argn olarak düşünülebilir . Birlikte yürütülen program için mevcut argüman listesini temsil eden null-sonlandırılmış dizeleri bir veya daha fazla işaretçi listesini açıklar. İlk argüman, kural gereği, yürütülmekte olan dosya ile ilişkili dosya adına işaret etmelidir. Bağımsız değişkenlerin listesi NULL işaretçisi tarafından sonlandırılmalıdır.

Execv ve execvp işlevleri, yeni program için mevcut argüman listesini temsil eden boş sonlandırılmış dizelere bir dizi işaretçi sağlar. İlk argüman, kural gereği, yürütülmekte olan dosya ile ilişkili dosya adına işaret etmelidir. İşaretçi dizisi bir NULL işaretçi tarafından sonlandırılmalıdır.

Execle işlevi ayrıca, parametre listesindeki argümanların listesini veya argv dizisine imleci ek bir parametre ile sonlandıran NULL işaretçisini izleyerek yürütülen işlemin ortamını da belirtir. Bu ek parametre, boş sonlandırılmış dizeler için bir dizi işaretçi ve bir NULL işaretçi tarafından sonlandırılmalıdır. Diğer işlevler, mevcut işlemdeki harici değişken ortamdan yeni işlem görüntüsünün ortamını alır.

Bu işlevlerden bazıları özel anlamlara sahiptir.

Execlp ve execvp işlevleri, belirtilen dosya adı eğik çizgi (/) karakteri içermiyorsa, yürütülebilir dosyanın aranmasında kabuğun eylemlerini çoğaltacaktır. Arama yolu, çevrede PATH değişkeniyle belirtilen yoldur. Bu değişken belirtilmemişse, ``: / bin: / usr / bin '' varsayılan yolu kullanılır. Ayrıca, belirli hatalar özel olarak ele alınır.

Bir dosya için izin reddedilirse (girişim EACCES'i geri döndürmeyi denedi), bu işlevler arama yolunun kalanını aramaya devam eder. Ancak başka bir dosya bulunamazsa, EACCES olarak ayarlanmış global değişken errno ile geri dönerler.

Bir dosyanın üstbilgisi tanınmazsa ( ENOEXEC'i döndürme girişiminde bulunulduğunda), bu işlevler, ilk argüman olarak dosyanın yolunu kullanarak kabuğu yürütür. (Bu girişim başarısız olursa, başka arama yapılmaz.)

Exec Fonksiyonlarının Dönüş Değeri

Exec işlevlerinden herhangi biri geri dönerse, bir hata meydana gelecektir. Dönüş değeri -1'dir ve genel değişken errno , hatayı belirtecek şekilde ayarlanacaktır.