GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan execl (termasuk contoh)

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.


Linux
  1. Cara menggunakan BusyBox di Linux

  2. Cara menggunakan perintah riwayat Bash

  3. Bagaimana saya menggunakan cron di Linux

  1. Cara menggunakan Perintah Su di Linux

  2. Bagaimana cara menggunakan baris file sebagai argumen perintah?

  3. Bagaimana cara menggunakan dos2unix?

  1. Cara Menggunakan Nginx untuk Mengarahkan

  2. Cara menggunakan input dalam skrip shell Anda

  3. Cara menggunakan perintah netstat di Linux (Contoh disertakan)