Untuk menghentikan sebuah proses, kita bisa menggunakan fungsi exit(). Fungsi ini berada dalam pustaka unistd.h. Bentuk umum fungsi ini adalah :
void exit(int status)
dimana status merupakan nilai balikan yang kita kirimkan via fungsi ini. Perjanjian yang banyak digunakan adalah 0 untuk penghentian proses yang sukses dan bukan 0 untuk penghentian proses yang bermasalah. Daftar yang umum digunakan oleh sistem FreeBSD ada di /usr/include/sysexits.h. Namun kita bisa saja mendefiniskan status error kita sendiri. Untuk lebih jelasnya perhatikan contoh berikut, test_exit.c, yang merupakan modifikasi file test_wait.c :
$edit test_exit.c
#include <stdio.h>
#include <unistd.h> /*fork() dan exit()*/
#include <sys/types.h> /*pid_t*/
int main()
{
pid_t nilai_balikan, pid;
int status;
nilai_balikan = fork();
if (nilai_balikan < 0){
perror("fork");
exit(1);
/* CATATAN : perror() menghasilkan sebuah pesan kesalahan pendek pada standard error yang menjelaskan eroor terakhir yang terjadi ketika sebuah penggilan ke sistem atau fungsi pustaka. */
}
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);
exit(0);
}
}
$ gcc -o test_exit test_exit.c
$ ./test_exit
coba killerror2.txt psoutput1.txt so.txt test_exit.c
cobaread psaxgrepsendmail.txt pssort.txt tes_fork test_fork
cobaread.c psaxgrepsenmail.txt sistem tes_fork.c test_fork.c
hello psaxoutput.txt sistem.c test_execl test_wait
hello.c psin.txt sistem2 test_execl.c test_wait.c
killerror.txt psoutput.txt sistem2.c test_exit
Proses induk dengan PID : 696, telah bersedia menunggu selesainya proses anaknya dengan PID : 697 sebelum menampilkan baris ini.
$
FreeBSD…bukan Superman tapi perkasa.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa