wait() berfungsi untuk memaksa menunggu bagi proses pemanggil [proses induk] atas selesainya eksekusi suatu proses anak sebelum melakukan aktivitas yang lain. Bentuk umum fungsi ini adalah :

int wait(int *status)

terlihat bahwa parameter fungsi ini adalah pointer integer.

Untuk lebih jelasnya kita bisa melihatnya pada contoh berikut [yang merupakan modifikasi file test_fork.c] :

$ edit test_wait.c

#include <stdio.h>
#include <unistd.h>         /*fork()*/
#include <sys/types.h>      /*pid_t*/

int main()
{
   pid_t nilai_balikan, pid;
   int status;

   nilai_balikan = fork();

   if (nilai_balikan < 0)
      fprintf(stderr, "Nilai balikan : %d, berarti fork gagal dieksekusi.\n", nilai_balikan);
   else if (nilai_balikan == 0)
      execlp("/bin/ls","ls",0);
   else{
      pid = wait(&status);
      printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid);
     }
}

$ gcc -o test_wait test_wait.c
$ ./test_wait
coba                    killerror2.txt          psoutput1.txt           so.txt                  test_fork.c
cobaread                psaxgrepsendmail.txt    pssort.txt              tes_fork                test_wait
cobaread.c              psaxgrepsenmail.txt     sistem                  tes_fork.c              test_wait.c
hello                   psaxoutput.txt          sistem.c                test_execl
hello.c                 psin.txt                sistem2                 test_execl.c
killerror.txt           psoutput.txt            sistem2.c               test_fork
Proses induk dengan PID : 676, telah bersedia menunggu selesainya proses anaknya dengan PID : 677 sebelum menampilkan baris ini.
$

Pada contoh di atas jelas terlihat bahwa proses induk PID 676 harus menunggu selesainya proses anak dengan PID 677 yang sedang menjalankan perintah ls sebelum bisa melakukan kegiataan yang lain [printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid);] dengan memanfaatkan fungsi wait(&status). &status sendiri merupakan pointer integer dari status proses anak yang dihasilkan oleh proses induk. Nilai balikannya fungsi wait(&status) adalah integer sehingga bisa dimuatkan ke variabel pid yang bertipe integer yang kemudian memungkinkan kita tampilkan nilainya dengan fungsi printf() dengan %d yang merupakan format penampilan data bertipe integer pada fungsi printf().

FreeBSD…dari awal pun dimungkinkan.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa