Langsung ke konten utama

Iklan





Fungsi Exec Family dan Perannya dalam Bahasa C

Fungsi-fungsi exec family berperan dalam menggantikan proses yang sedang berjalan saat ini dengan proses baru pada bahasa pemrograman C. 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, maka akan diciptakan 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.

// EXEC.c

#include<stdio.h> 

#include<unistd.h> 

 

int main() 

int i; 

printf("Program EXEC.c yang"

" dipanggil oleh execvp()"); 

printf("\n"); 

return 0

}


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

// execDemo.c

#include<stdio.h> 

#include<stdlib.h> 

#include<unistd.h>

 

int main() 

// Null mematikan array dari

// karakter pointer. 

char *args[]={"./EXEC",NULL}; 

execvp(args[0],args); 

// Semua statement akan

// diabaikan setelah fungsi

// execvp() dipanggil, dan

// proses process (execDemo.c)

// akan digantikan oleh proses

// (EXEC.c).

printf("Ending-----");

return 0

}


Selanjutnya, ciptakan file executable dari execDemo.c menggunakan perintah:
gcc execDemo.c -o execDemo

Setelah menjalankan file executable dari execDemo.c dengan menggunakan perinah ./excDemo, maka didapatkan output sebagai berikut:
Program EXEC.c yang dipanggil oleh 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. Diaman 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(), dimana akan disediakan dua file EXEC.c dan execDemo.c dan execDemo.c yang akan digunakan untuk mengganti EXEC.c dengan cara memanggil fungsi execv() pada execDemo.c.



Iklan

//Program EXEC.c pada bahasa C 

#include<stdio.h> 

#include<unistd.h> 

 

int main() 

int i; 

printf("Program EXEC.c yang"

" dipanggil oleh execv() "); 

printf("\n"); 

return 0

}


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

// Program execDemo.c pada

// bahasa C

#include<stdio.h> 

#include<stdlib.h> 

#include<unistd.h> 

 

int main() 

// Null mematikan array dari

// karakter pointer. 

char *args[]={"./EXEC",NULL}; 

execv(args[0],args); 

// Semua statement akan

// diabaikan setelah fungsi

// execvp() dipanggil, dan

// proses (execDemo.c) akan

// digantikan oleh proses

// (EXEC.c).

printf("Ending-----"); 

return 0

}


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:
Program EXEC.c yang dipanggil oleh 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 yang telah 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.


Iklan

Komentar

  1. Apa perbedaan antara fork() dan exe()?

    BalasHapus
    Balasan
    1. fork() mengembalikan PID dari child proses.

      Perbedaan utama antara fork() dan exe() adalah bahwa fork memulai proses baru yang merupakan salinan dari proses utama. Sedangkan exec() menggantikan image proses saai dengan proses yang baru, dimana proses parent dan child akan dijalankan secara bersamaan.

      Hapus
  2. Apa yang dimaksud dengan exex pada UNIX?

    BalasHapus
    Balasan
    1. Perintah exec pada Linux digunakan untuk menjalankan perintah dari bash itu sendiri. Dimana perintah ini tidak memuat proses baru, melainkan hanya mengganti bash dengan perintah lain yang akan dijalankan. Jika perintah exec perhasil dieksekusi, maka perintah tersebut tidak akan kembali ke proses pemanggilan.

      Hapus
  3. Apa kegunaan dari perintah exec ketika dipanggil?

    BalasHapus
    Balasan
    1. Pemanggilan sitem exec digunakan untuk menjalankan file yang berada dalam proses aktif. Ketika perintah exec dipanggil, file yang dapat dieksekusi sebelumnya diganti dengan file baru dijalankan. Lebih tepatnya, dapat dikatakan bahwa pemanggilan sistem exec akan menggantikan file atau program lama dari proses dengan file atau program baru yang telah disiapkan.

      Hapus

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D