[C] GNU/Linux exec() Functions Family
#1
Selamat malam warga IBT, selamat hari raya Idul Fitri 1434 H, mohon maaf lahir batin sebelumnya.
Oke langsung saja, kali ini ane mau ngebahas keluarga dari fungsi exec() yang terdapat pada bahasa C di lingkungan GNU/Linux.

Sekilas tentang exec
1. Fungsi exec ini ketika di invoke atau dipanggil maka ia akan me-replace process dengan program baru yang dieksekusi oleh fungsi ini.

2. Terdapat pada file unistd.h
3. Hanya akan mengembalikan sebuah nilai (return value) jika terdapat kesalahan dalam proses pengeksekusian oleh fungsi ini. Dalam hal ini, return value nya adalah -1

Deklarasi fungsi
Code:
#include <unistd.h>

extern char **environ;

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
int execve(const char *filename, char *const argv[], char *const envp[]);

Varian dari fungsi exec

1. Fungsi yang memiliki huruf p
Code:
execvp
execlp

kedua fungsi ini mencari file executable pada tiap path yang terdapat didalam environment variable PATH.
Namun, apabila terdapat karakter slash "/" pada argumen pertama, maka PATH akan diabaikan.

2. Fungsi yang memiliki huruf v
Code:
execvp
execv
execve

Fungsi - fungsi ini menerima argumen untuk program yang akan dieksekusi sebagai NULL-terminated array pointer ke string. Dan element terakhir dari array ini harus NULL

3. Fungsi yang memiliki huruf l
Code:
execl
execle
execlp

Fungsi - fungsi ini menerima argumen untuk program yang akan dijalankan menggunakan mekanisme varargs dari bahasa C.
Misalnya: arg0,arg1,arg2,arg3,argn...

4. Fungsi yang memiliki huruf e di akhir nama
Code:
execve
execvpe
execle

Fungsi - fungsi ini menerima argument terakhir sebagai environment variable, argument ini bertipe array dari pointer ke string. Dan tiap string harus berbentuk seperti ini -> "VARIABLE=value". Dan element terakhir dari array ini harus NULL


Contoh penggunaan
Code:
#include <stdio.h>
#include <unistd.h>

int main()
{
    /* Variabel untuk menampung argument untuk program yang akan dijalankan
       index pertama berisi nama program yang akan dieksekusi */
    char* args[] = {"ls","-l","/",NULL};
    
    /* Eksekusi! */
    execvp("ls",args);
    
    fprintf(stderr, "Error ketika mengeksekusi program\n");
}

Sekian dari saya, mohon maaf kalo banyak kesalahan, saya juga masih belajar.
Kritikan, saran, masukan akan sangat membantu proses belajar saya.
Jangan lupa koreksi kalau ada kesalahan. Thanks
Wassalam !

Referensi:
http://man7.org/linux/man-pages/man3/exec.3.html
http://man7.org/linux/man-pages/man2/execve.2.html


Messages In This Thread
[C] GNU/Linux exec() Functions Family - by T3rminate1 - 08-13-2013, 09:16 PM




Users browsing this thread: 1 Guest(s)