Pemrograman C

Panggilan Sistem Exec di C

Panggilan Sistem Exec di C
Keluarga exec memiliki banyak fungsi di C. Fungsi-fungsi C ini pada dasarnya digunakan untuk menjalankan perintah sistem dalam proses terpisah yaitu program utama dan mencetak output.

Pada artikel ini, saya akan berbicara tentang keluarga fungsi exec dan menunjukkan kepada Anda bagaimana menggunakan masing-masing fungsi keluarga exec ini di C. Jadi, mari kita mulai.

Fungsi Sistem C di Keluarga Exec:

Keluarga fungsi exec didefinisikan di header unistd.h. Jadi, Anda harus menggunakan header ini pada program C di mana Anda ingin menggunakan fungsi-fungsi ini.

Fungsi exec yang tersedia bersama dengan parameter fungsinya diberikan di bawah ini:

Mari kita lihat apa yang dilakukan masing-masing fungsi ini dan bagaimana menggunakannya.

execl() Fungsi Sistem:

Dalam execl() fungsi sistem mengambil jalur file biner yang dapat dieksekusi (i.e. /bin/ls) sebagai argumen pertama dan kedua. Kemudian, argumen (i.e. -lh, /rumah) yang ingin Anda berikan ke executable diikuti oleh BATAL. Kemudian fungsi sistem execl() menjalankan perintah dan mencetak output. Jika terjadi kesalahan, maka execl() mengembalikan -1. Jika tidak, itu tidak mengembalikan apa-apa.

Sintaksis:

int execl(const char *path, const char *arg,… , NULL);

Contoh fungsi sistem execl() diberikan di bawah ini:

#termasuk
 
int utama(kosong)
char *binaryPath = "/bin/ls";
char *arg1 = "-lh";
char *arg2 = "/rumah";
 
execl(binerPath, binaryPath, arg1, arg2, NULL);
 
kembali 0;

aku berlari ls -lh /rumah perintah menggunakan execl() fungsi sistem. Seperti yang Anda lihat, hasil yang benar ditampilkan.

execlp() Fungsi Sistem:

execl() tidak menggunakan JALAN variabel lingkungan. Jadi, path lengkap dari file yang dapat dieksekusi diperlukan untuk menjalankannya dengan execl(). execlp() menggunakan variabel lingkungan PATH. Jadi, jika file atau perintah yang dapat dieksekusi tersedia di PATH, maka perintah atau nama file cukup untuk menjalankannya, path lengkap tidak diperlukan.

Sintaksis:

int execlp(const char *file, const char *arg,… , NULL );

Kita dapat menulis ulang contoh execl() menggunakan fungsi sistem execlp() sebagai berikut:

#termasuk
 
int utama(kosong)
char *namaprogram = "ls";
char *arg1 = "-lh";
char *arg2 = "/rumah";
 
execlp(nama program, nama program, arg1, arg2, NULL);
 
kembali 0;

Saya hanya melewati nama perintah ls, bukan jalan penuh /bin/ls. Seperti yang Anda lihat, saya mendapatkan hasil yang sama seperti sebelumnya.

execv() Fungsi Sistem:

Dalam fungsi execl(), parameter file yang dapat dieksekusi diteruskan ke fungsi sebagai argumen yang berbeda different. Dengan execv(), Anda dapat melewatkan semua parameter dalam array yang diakhiri NULL argv. Elemen pertama dari array harus menjadi jalur file yang dapat dieksekusi. Jika tidak, fungsi execv() berfungsi seperti fungsi execl()().

Sintaksis:

int execv(const char *path, char *const argv[]);

Kita dapat menulis ulang contoh execl() sebagai berikut:

#termasuk
 
int utama(kosong)
char *binaryPath = "/bin/ls";
char *args[] = binaryPath, "-lh", "/home", NULL;
 
execv(binerPath, args);
 
kembali 0;

Seperti yang Anda lihat, saya mendapatkan hasil yang benar.

execvp() Fungsi Sistem:

Bekerja dengan cara yang sama seperti fungsi sistem execv(). Tapi, variabel lingkungan PATH digunakan. Jadi, path lengkap dari file yang dapat dieksekusi tidak diperlukan seperti pada execlp().

Sintaksis:

int execvp(const char *file, char *const argv[]);

Kita dapat menulis ulang contoh execv() sebagai berikut:

#termasuk
 
int utama(kosong)
char *namaprogram = "ls";
char *args[] = namaprogram, "-lh", "/home", NULL;
 
execvp(namaprogram, args);
 
kembali 0;

Seperti yang Anda lihat, output yang benar ditampilkan.

execle() Fungsi Sistem:

Bekerja seperti execl() tetapi Anda dapat menyediakan variabel lingkungan Anda sendiri bersamanya. Variabel lingkungan dilewatkan sebagai array envp. Elemen terakhir dari envp array harus NULL. Semua elemen lain berisi pasangan nilai kunci sebagai string.

Sintaksis:

int execle(const char *path, const char *arg,… , NULL, char * const envp[] );

Contoh fungsi sistem execle() diberikan di bawah ini:

#termasuk
 
int utama(kosong)
char *binaryPath = "/bin/bash";
char *arg1 = "-c";
char *arg2 = "echo "Kunjungi $HOSTNAME:$PORT dari browser Anda."";
char *const env[] = "HOSTNAME=www.linuxhint.com", "PORT=8080", NULL;
 
execle(binerPath, binaryPath,arg1, arg2, NULL, env);
 
kembali 0;

Saya melewati dua variabel lingkungan NAMA HOST dan PELABUHAN ke fungsi execle(). Seperti yang Anda lihat, saya dapat mengaksesnya dari yang dapat dieksekusi /bin/bash.

execve() Fungsi Sistem:

Sama seperti execle() Anda dapat menyediakan variabel lingkungan Anda sendiri bersama dengan execve(). Anda juga dapat meneruskan argumen sebagai array seperti yang Anda lakukan di execv().

Sintaksis:

int execve(const char *file, char *const argv[], char *const envp[]);

Contoh execle() dapat ditulis ulang sebagai berikut:

#termasuk
 
int utama(kosong)
char *binaryPath = "/bin/bash";
char *const args[] = binaryPath, "-c", "echo "Kunjungi $HOSTNAME:$PORT
dari browser Anda."", NULL;
char *const env[] = "HOSTNAME=www.linuxhint.com", "PORT=8080", NULL;
 
execve(binerPath, args, env);
 
kembali 0;

Seperti yang Anda lihat, kami mendapatkan output yang sama seperti pada contoh execle().

Jadi, begitulah cara Anda menggunakan keluarga fungsi exec di C untuk pemrograman sistem di Linux. Terima kasih telah membaca artikel ini.

Panduan pemula untuk menggores web dengan Python dan sup Cantik
World wide web adalah sumber yang mencakup semua dan utama dari semua data yang ada. Perkembangan pesat yang telah dilihat internet dalam tiga dekade...
Python untuk Peretasan, Bangun Pemindai Port
Python untuk Peretasan: Bangun pemindai Port dalam 13 Baris Dengan Python Menjadi penguji penetrasi bukan hanya sekedar bisa mengeksploitasi target te...
Instal Anaconda Python di CentOS 7
Anaconda Python adalah distribusi Python yang menyediakan banyak alat untuk ilmuwan data. Alat-alat ini juga merupakan paket Python. Anda dapat mengin...