Skip to main content

Linux / Unix Komutu Hakkında: execvp

Linux Exec System Call (Mart 2024)

Linux Exec System Call (Mart 2024)
Anonim

exec fonksiyon ailesi, mevcut işlem görüntüsünü yeni işlem görüntüsüyle değiştirir. Burada açıklanan işlevler, işlev için ön uçlardırexecve(2).

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

const char * arg ve sonraki elipslerexecl, execlp, veexecle fonksiyonlar olarak düşünülebilir arg0 , arg1 , …, argn . 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. Tartışmaların listesi şart tarafından sonlandırılmakBOŞ Işaretçi.

execv veexecvp işlevler, yeni program için kullanılabilir olan 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 şart tarafından sonlandırılmakBOŞ Işaretçi.

execle Fonksiyonu takip ederek yürütülen işlemin ortamını da belirler.BOŞparametre listesindeki argümanların listesini veya ek parametre ile argv dizisine işaretçi sonlandırır. Bu ek parametre, boş sonlandırılmış dizelere işaret eden bir dizi dizidir. şart tarafından sonlandırılmakBOŞ Işaretçi. Diğer işlevler, dış işlemden yeni işlem görüntüsünün ortamını alır çevrelemek mevcut süreçte.

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

Fonksiyonlarexeclp veexecvp Belirtilen dosya adı eğik çizgi (/) karakteri içermiyorsa, yürütülebilir dosyanın aranmasında kabuk eylemlerini çoğaltacaktır. Arama yolu, çevrede belirtilen yoldur.YOL değişken. 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 reddedildiyse (denendiexecve iadeEACCES), bu işlevler arama yolunun kalanını aramaya devam edecektir. Bununla birlikte, başka bir dosya bulunamazsa, bunlar global değişkenle birlikte dönecektir. errno ayarlanırEACCES.

Bir dosyanın üstbilgisi tanınmadıysa (denendiexecve iadeENOEXEC), 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.)

Geri dönüş değeri

Herhangi biriexec işlevler döndürür, bir hata oluştu. Dönüş değeri -1, global değişken errno hatayı göstermek için ayarlanacaktır.

Önemli: Kullan adam komut ( % adam Belirli bir bilgisayarda nasıl bir komutun kullanıldığını görmek için).

isim

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

özet

#Dahil etmek

extern char ** ortamı;

int execl (const char *) yol , const char * arg , …); int execlp (const char * dosya , const char * arg , …); int yürütme (const char * yol , const char * arg , …, char * const envp ); int execv (const char * yol , char * const argv ); int execvp (const char * dosya , char * const argv );