Pelajari Perintah Linux - execv

execl, execlp, execle, execv, execvp - jalankan file

Ringkasan

#include

extern char ** environ;

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

Deskripsi fungsi exec

Fungsi keluarga exec menggantikan gambar proses saat ini dengan gambar proses baru. Fungsi yang dijelaskan dalam halaman buku panduan ini adalah ujung depan untuk fungsi yang dijalankan (2). (Lihat halaman manual untuk eksekusi untuk informasi rinci tentang penggantian proses saat ini.)

Argumen awal untuk fungsi-fungsi ini adalah pathname dari file yang akan dieksekusi.

Konst char * arg dan elips berikutnya dalam fungsi execl , execlp , dan execle dapat dianggap sebagai arg0 , arg1 , ..., argn . Bersama-sama mereka mendeskripsikan daftar satu atau lebih pointer ke string yang diakhiri null yang mewakili daftar argumen yang tersedia untuk program yang dijalankan. Argumen pertama, berdasarkan konvensi, harus menunjuk ke nama file yang terkait dengan file yang sedang dieksekusi. Daftar argumen harus diakhiri oleh pointer NULL .

Fungsi execv dan execvp menyediakan array pointer ke string yang diakhiri null yang mewakili daftar argumen yang tersedia untuk program baru. Argumen pertama, berdasarkan konvensi, harus menunjuk ke nama file yang terkait dengan file yang sedang dieksekusi. Array pointer harus diakhiri oleh pointer NULL .

Fungsi eksekusi juga menentukan lingkungan proses yang dijalankan dengan mengikuti penunjuk NULL yang mengakhiri daftar argumen dalam daftar parameter atau penunjuk ke larik argv dengan parameter tambahan. Parameter tambahan ini adalah array pointer ke string yang diakhiri null dan harus diakhiri oleh pointer NULL . Fungsi lainnya mengambil lingkungan untuk citra proses baru dari lingkungan variabel eksternal dalam proses saat ini.

Beberapa fungsi ini memiliki semantik khusus.

Fungsi execlp dan execvp akan menduplikasi tindakan shell dalam mencari file yang dapat dieksekusi jika nama file yang ditentukan tidak mengandung karakter slash (/). Jalur pencarian adalah jalur yang ditentukan di lingkungan oleh variabel PATH . Jika variabel ini tidak ditentukan, jalur default ``: / bin: / usr / bin '' digunakan. Selain itu, kesalahan tertentu diperlakukan secara khusus.

Jika izin ditolak untuk file (upaya eksekusi mengembalikan EACCES ), fungsi-fungsi ini akan terus mencari sisa jalur pencarian. Jika tidak ada file lain yang ditemukan, mereka akan kembali dengan variabel global yang diatur ke EACCES .

Jika header file tidak dikenali (percobaan eksekusi mengembalikan ENOEXEC ), fungsi-fungsi ini akan mengeksekusi shell dengan path file sebagai argumen pertama. (Jika upaya ini gagal, tidak ada pencarian lebih lanjut yang dilakukan.)

Nilai Pengembalian Fungsi exec

Jika salah satu fungsi exec kembali, kesalahan akan terjadi. Nilai kembalian adalah -1, dan variabel global errno akan ditetapkan untuk menunjukkan kesalahan.