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 <stdlib.h>
#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