Dengan fungsi fork() memungkinkan sebuah proses dijalankan oleh dua proses identik yang kita kenal sebagai proses parent (induk) dan proses child (anak). Fork yang sukses akan memberikan nilai balikan 0 dan memberikan nilai balikan -1 jika terjadi kegagalan eksekusi fungsi ini.
Untuk lebih jelasnya perhatikan contoh berikut :
#edit test_fork.c
#include <stdio.h>
#include <unistd.h> /* pustaka dimana fungsi fork() berada */
#include <sys/types.h> /* pustaka dimana tipe data pid_t berada */
int main()
{
pid_t nilai_balikan;
nilai_balikan = fork();
if (nilai_balikan < 0)
fprintf(stderr, "Nilai balikan : %d, berarti fork gagal dieksekusi\n", nilai_balikan);
else if (nilai_balikan == 0)
printf("Nilai balikan : %d, berarti fork berhasil dieksekusi dan membuat proses anak dengan PID : %d\n", nilai_balikan
else
printf("Ini proses induk dengan PID : %d\n", getpid());
}
$ gcc -o test_fork test_fork.c
$ ./test_fork
Ini proses induk dengan PID : 766
Nilai balikan : 0, berarti fork berhasil dieksekusi dan membuat proses anak dengan PID : 767
$
Tipe data pid_t adalah signed integer untuk merepresentasikan PID yang terdapat dalam standar pustaka GNU sys/types.h. dan fungsi getpid() bisa kita gunakan untuk mengetahui PID dari proses yang berjalan [baik proses induk maupun proses anak].
FreeBSD…mendasar dan terpahami.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa