Berikut adalah contoh sebuah proses yang menjalankan proses yang lain :
komkecil#edit sistem.c
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("Jalankan perintah ps dengan system\n");
system("ps -ax");
printf("Selesai.\n");
exit(0);
}
komkecil# gcc -o sistem sistem.c
komkecil# ./sistem
Jalankan perintah ps dengan system
PID TT STAT TIME COMMAND
0 ?? WLs 0:00.00 [swapper]
1 ?? ILs 0:00.02 /sbin/init –
2 ?? DL 0:00.05 [g_event]
3 ?? DL 0:00.11 [g_up]
. . .
553 p0 Is 0:00.02 -sh (sh)
555 p0 I 0:00.02 su
556 p0 S 0:00.09 _su (csh)
606 p0 S+ 0:00.00 ./sistem
607 p0 S+ 0:00.01 sh -c ps -ax
608 p0 R+ 0:00.00 ps -ax
Selesai.
komkecil#
Pada contoh program di atas, dia membuat satu proses ./sistem yang kita buat dengan bahasa C [PID 606] yang meminta shell [PID 607] yang kemudian shel tersebut meminta sistem FreeBSD menampilkan proses ps -ax [PID 608].
Dalam hal ini program sistem kita memanfaatkan fungsi pustaka system. Karena perintah ps -ax bukanlah sebuah backgroud process, maka progam sistem kita menunggu hingga ps -ax menampilkan otputnya ke layar, baru progam sietem menyatakan Selesai. Sebelum sistem menjalankan perintah ps -ax hingga selesai, program sistem tidak bisa menerima tugas [task] yang lain.
Ceritanya akan lain jika proses yang diminta adalah sebuah backgroud process. Baiklah, ubah sedikit file sistem.c menjadi sistem2.c seperti berikut :
komkecil#edit sistem2.c
#include <stdio.h>
int main()
{
printf("Jalankan perintah ps dengan system\n");
system("ps -ax &");
system("pwd &");
printf("Selesai.\n");
exit(0);
}
komkecil# gcc -o sistem2 sistem2.c
komkecil# ./sistem2
Jalankan perintah ps dengan system
Selesai.
/usr/home/handaru
komkecil# PID TT STAT TIME COMMAND
0 ?? WLs 0:00.00 [swapper]
1 ?? SLs 0:00.02 /sbin/init –
2 ?? DL 0:00.11 [g_event]
3 ?? DL 0:00.16 [g_up]
. . .
553 p0 Is 0:00.02 -sh (sh)
555 p0 I 0:00.02 su
556 p0 S+ 0:00.12 _su (csh)
684 p0 R 0:00.00 ps -ax
686 p0 R 0:00.00 sh -c pwd &
komkecil#
Sekarang bisa Anda lihat bahwa program kita [sistem2] meminta sistem FreeBSD menjalankan perintah ps -ax namun sebagai backgroud process [ps -ax &] sehingga program sistem2 kita tidak perlu menunggu program ps -ax & menyelesaikan penampilannya ke layar, sistem2 sudah bisa menampilkan perintah pwd &. Bahkan sistem2 bisa menganggap tugasnya telah selesai [Selesai.] ketika hasil perintah ps -ax & dan pwd & belum tertampil di layar :
komkecil# ./sistem2
Jalankan perintah ps dengan system
Selesai.
/usr/home/handaru
komkecil# PID TT STAT TIME COMMAND
0 ?? WLs 0:00.00 [swapper]
1 ?? SLs 0:00.02 /sbin/init –
. . .
FreeBSD…asal-usulnya jelas.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa