Selasa, Juli 14, 2020

fungsi exec family dan perannya dalam bahasa c

Fungsi-fungsi exec family berperan dalam menggantikan proses yang sedang berjalan saat ini dengan proses baru. fungsi tersebut dapat digunakan untuk menjalankan program bahasa c dengan menggunakan program bahasa c lainnya. fungsi ini digunakan menggunakan file header unistd.h. Terdapat banyak anggota dari exec family yang diperlihatkan sebagai berikut.

satu, execvp: dengan menggunakan perintah ini, menciptakan child proses yang tidak perlu menjalankan program yang sama sebagai parent process. Pemanggilan sistem tipe exec memungkinkan sebuah proses untuk menjalankan program file apapun, termasuk sebuah binary executable atau sebuah skrip shell.

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

file: titik dari nama file yang berasosiasi dengan file yang akan dieksekusi.
argv: adalah sebuah null yang mematikan array dari pointer karakter.

Perhatikan contoh kecil untuk menampilkan bagaimana fungsi execvp() digunakan pada bahasa c. Terdapat dua file .c, EXEC.c dan execDemo.c, dimana execDemo.c akan mengganti EXEC.c dengan memanggil fungsi execvp() pada execDemo.c.


Selanjutnya dapatkan file executable dari EXEC.c menggunakan perintah
gcc EXEC.c -o EXEC

Selanjutnya, ciptakan file executable dari execDemo.c menggunakan perintah

gcc execDemo.c -o execDemo

Setelah menjalankan file executable dari execDemo.cby dengan menggunakan perinah ./excDemo, maka didapatkan output sebagai berikut:

I AM EXEC.c called by execvp()

Ketika file execDemo.c dikompilasi, selama statement execvp(args[0],args) dieksekusi, maka program akan digantikan dengan program EXEC.c. "Ending--" tidak akan ditampilkan dilayar selama fungsi execvp() tetap dipanggil, program tersebut akan digantikan oleh program EXEC.c.

dua, execv: hal ini hampir sama dengan fungsi execvp() dalam hal sintak. Sintak dari execv() diperlihatkan sebagai berikut:

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

path: menunjuk ke jalur dari file yang akan dieksekusi.
argv[]: adalah null yang mematikan array dari pointer karakter.

Perhatikan contoh kecil bagaimana fungsi execv() digunakan pada bahasa c. Contoh ini sama dengan contoh yang diperlihatkan sebelumnya untuk execvp(). Akan disediakan dua file EXEC.c dan execDemo.c dan execDemo.c akan digunakan untuk mengganti EXEC.c dengan memanggil fungsi execv() pada execDemo.c.

Sekarang ciptakan file executable dari EXEC.c menggunakan perintah
gcc EXEC.c -o EXEC

Selanjutnya ciptakan file executable dari execDemo.c menggunakan perintah

gcc execDemo.c -o execDemo

Setelah file executable execDemo.c dijalankan menggunakan perintah ./excDemo, maka nilai output-nya adalah:

I AM EXEC.c called by execv()

tiga, execlp dan execl: dua fungsi tersebut digunakan untuk tujuan yang sama tetapi sintak dari keduanya sedikit berbeda seperti diperlihatkan sebagai berikut:

Sintak:
int execlp(const char *file, const char *arg,.../* (char  *) NULL */);
int execl(const char *path, const char *arg,.../* (char  *) NULL */);

file: nama file berasosiasi dengan file yang akan dieksekusi.
const char *arg dan ellipses: mendeskripsikan sebuah daftar dari satu atau lebih pointer ke null-terminated string yang merepresentasikan daftar argumen yang tersedia untuk mengeksekusi program.

Program bahasa C yang sama diperlihatkan sebelumnya juga akan dieksekusi dengan fungsi execlp() atau execl() dan akan mengampilkan tugas yang sama yaitu mengganti proses saat ini dengan proses yang baru.

empat, execvpe dan execle: dua fungsi ini juga memiliki tujuan yang sama tetapi sintak dari keduanya sedikit berbeda dari semua anggota exec family sebelumnya. Sintak dari kedua fungsi tersebut diperlihatkan sebagai berikut:

Sintak:
int execvpe(const char *file, char *const argv[],char *const envp[]);

Sintak:
int execle(const char *path, const char *arg, .../*, (char *) NULL, 
char * const envp[] */);

Sintak tersebut memperlihatkan satu perbedaan argumen dari semua anggota exex.
char * const envp[]: memungkinkan untuk melakukan pemanggilan secara khusus dari lingkungan pengembangan program melalui argumen envp.

envp: Argumen ini adalah array dari pointer ke null-terminated string dan akan dihentikan oleh pointer null. Fungsi lainnya mengambil lingkungan untuk gambar proses baru dari variabel ekternal dalam proses pemanggilan.





Related Posts

fungsi exec family dan perannya dalam bahasa c
Oleh

mohon untuk melakukan koreksi jika terdapat kesalahan pada penulisan blog ini,