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