execl adalah salah satu keluarga panggilan exec yang bertindak sebagai ujung depan ke execve. Tangkapan layar berikut mengacu pada man execl:
Argumen untuk tujuh fungsi exec ini sulit untuk diingat. Huruf-huruf dalam nama fungsi agak membantu. Huruf p berarti bahwa fungsi mengambil argumen nama file dan menggunakan variabel lingkungan PATH untuk menemukan file yang dapat dieksekusi. Huruf l berarti bahwa fungsi mengambil daftar argumen dan saling eksklusif dengan huruf v, yang berarti mengambil vektor argv[]. Terakhir, huruf e berarti bahwa fungsi tersebut mengambil larik envp[] alih-alih menggunakan lingkungan saat ini.
Dalam posting "Menggunakan execve" kami melihat bagaimana itu dapat digunakan untuk meluncurkan proses baru dan juga memberikan argumen padanya. execl juga meluncurkan proses baru menggantikan yang sekarang. Sintaks dari execl adalah:
int execl(const char *path, const char *arg, ...);
Argumen :
jalur :Jalur ke executable yang perlu dia dieksekusi oleh execl.
arg… :Serangkaian pointer ke argumen yang perlu diteruskan ke executable.
Di execve kita harus melewatkan array pointer sebagai argumen, tapi di execl kita bisa langsung melewatkan pointer sebagai argumen. Argumen ini harus diakhiri dengan NULL.
Contoh
1. Mari kita menulis program sederhana untuk mencetak argumen yang diteruskan ke program tersebut.
# vi hello.c #include <stdio.h> main(int argc,char *argv[],char *envp[]){ printf("Filename: %s\n",argv[0]); printf("%s %s\n",argv[1],argv[2]); }
2. Dengan konvensi argumen pertama harus selalu nama file dan kami akan mengikuti yang sama. Mari kita kompilasi ini dan beri nama "halo" yang dapat dieksekusi
# cc hello.c -o hello
3. Sekarang mari kita menulis sebuah program untuk menjalankan “halo” yang dapat dieksekusi menggunakan execl.
# vi execl.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> main() { char *temp,*temp1,*temp2; temp="hello"; //filename temp1="Funny"; temp2="world"; execl("hello",temp,temp1,temp2,NULL); printf("Error"); }
4. Kompilasi kode dan jalankan:
# cc execl.c -o execl ./execl
Keluaran:
Filename: hello Funny world
Dengan demikian program dapat berhasil menjalankan "halo" yang dapat dieksekusi dan juga meneruskan argumen ke dalamnya. Juga, perhatikan bahwa execl tidak kembali ke fungsi panggilan, jika tidak maka akan mencetak pernyataan “Error” setelah panggilan ke execl.