Apa saja versi berbeda dari exec yang digunakan untuk C dan C ++?

91

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?

node ninja
sumber

Jawaban:

182

Perbedaan tersebut merupakan kombinasi dari:

  1. L vs V : apakah Anda ingin meneruskan parameter ke program yang dijalankan sebagai

    • L : parameter individu dalam panggilan (daftar argumen variabel): execl(), execle(), execlp(), danexeclpe()
    • V : sebagai array dari char * 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.

  2. 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.

  3. 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.

Christo
sumber
2
Penjelasan terbaik yang pernah saya lihat sejauh ini. Ini hampir sesingkat dokumentasi / referensi resmi, namun seribu kali lebih ekspresif, informatif, dan mudah dipahami. Terima kasih.
Akito
5

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

IanNorton
sumber
2
ini tidak benar-benar menjawab pertanyaan dan hanya tautan.
Jean-François Fabre
Sebelum sampai disini saya membaca dokumentasi di website, tapi tidak banyak membantu. Penjelasannya sangat singkat, meskipun harus rumit. Selain itu, sulit untuk menemukan penjelasan yang benar tentang apa yang Anda cari, jika Anda mencari dari awal.
Akito
-4

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.

bruziuz
sumber
2
Meskipun tautan ini mungkin menjawab pertanyaan, lebih baik menyertakan bagian penting dari jawaban di sini dan menyediakan tautan untuk referensi. Jawaban link saja bisa menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
31piy
Linknya ke amazon dan ke posxis standart agar berguna bagi pembaca. Oke, saya menghapus tautan seperti yang Anda minta, bahkan saya tidak setuju ini lebih baik. Hapus donwvote Anda jika sekarang lebih mudah dibaca.
bruziuz
1
Saya tidak meremehkan jawaban Anda. Saya baru saja mendapatkan ulasan saya tentang jawaban Anda, yang menurut saya berkualitas rendah. Saya tidak bermaksud menghapus tautan. Intinya di sini adalah memasukkan kutipan relevan dari tautan yang membantu pembaca di masa mendatang untuk memahami jawabannya secara instan. Hanya memposting tautan dalam jawaban tidak membantu siapa pun.
31piy