Artikel Terbaru

4 Keunggulan Utama Bitcoin

Sebelum membicarakan tentang bitcoin, terlebih dahulu mari pahami apa yang dimaksud dengan uang. Apa sebenarnya yang dimaksud dengan uang? Pada dasarnya, uang adalah segala sesuatu yang mewakili nilai tertentu.

6 Jenis 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.


//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.

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, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

4 Contoh Program Java dan Multiple Inheritance

Perbedaan Antara int main() dan int main(void) pada Bahasa C