Ini semua adalah versi exec yang dapat digunakan di C (dan C ++)
execl
execle
execlp
execv
execve
execvp
Apa perbedaan diantara mereka? Bagaimana Anda tahu mana yang akan digunakan?
Ini semua adalah versi exec yang dapat digunakan di C (dan C ++)
execl
execle
execlp
execv
execve
execvp
Apa perbedaan diantara mereka? Bagaimana Anda tahu mana yang akan digunakan?
Jawaban:
Perbedaan tersebut merupakan kombinasi dari:
L vs V : apakah Anda ingin meneruskan parameter ke program yang dijalankan sebagai
execl()
, execle()
, execlp()
, danexeclpe()
execv()
, execve()
, execvp()
, danexecvpe()
Format array berguna ketika jumlah parameter yang akan dikirim ke proses yang dieksekusi adalah variabel - seperti yang tidak diketahui sebelumnya, jadi Anda tidak dapat memasukkan sejumlah parameter tetap dalam pemanggilan fungsi.
E : Versi dengan 'e' di bagian akhir memungkinkan Anda meneruskan larik char * yang merupakan sekumpulan string yang ditambahkan ke lingkungan proses yang muncul sebelum program yang dijalankan dijalankan. Namun cara lain untuk melewatkan parameter, sungguh.
P : Versi dengan 'p' di sana menggunakan variabel lingkungan PATH
untuk mencari file yang dapat dieksekusi bernama untuk dieksekusi. Versi tanpa 'p' memerlukan path file absolut atau relatif untuk ditambahkan ke nama file dari executable jika tidak ada di direktori kerja saat ini.
Opengroup adalah salah satu referensi umum terbaik untuk fungsi inti c / c ++.
Dokumen untuk exec * ada di sini: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
Ini ekstensi Posix dari perpustakaan runtime C. Jika dokumentasi resmi Posix tidak mencukupi maka saya dapat merekomendasikan buku - Samuel P. Harbison, Guy L.Steele, 2002 "Referensi CA" Halaman # 416 - membahas pertanyaan itu.