Selasa, 04 November 2014

Process Programming 


            Setiap process di Linux memiliki PID (Process ID). PID adalah 16 bit  integer yang keluar secara bersamaan. Setiap proses memiliki parent process, kecuali proses init. 


         Terdapat 3 cara untuk membuat proses baru melalui kode program : 

1. Fungsi system ()
    Menjalankan shell command. Didefinisikan dengan : #include<stdlib.h> , int system (const char *string);
     Fungsi ini tidak disarankan karena tidak portable, menghabiskan resource, dan berbahaya.

2. System call fork ()
    Fork() akan menduplikasikan proses yang ada. Proses hasil duplikasi disebut proses anak. definisi fungsi dengan : #include <unistd,h> , pid_t fork (void); pid_t vfork(void);.
    Return value dari fork() menentukan sedang ada di proses mana. Apabila  >0 ada di parent process, apabila =0 maka berada di child process, apabila <0 maka error.

3. Fungsi exec* family
    Ciri - cirinya adalah mengganti program yang sedang berjalan pada suatu proses.
    Keluarga exec: execv, execvp, execve, execlp, execle

Signal
    Signal adalah sebuah event yang dikirimkan ke suatu proses oleh proses itu sendiri atau proses lain. Digunakan untuk mengirimkan notifikasi kepada suatu proses bahwa ada suatu event. Definisi : #include <sys/types.h> #include <signal.h> int_kill(pid_t, pid, int sig);
     Beberapa contoh signal yang populer:
  • SIGKILL , mengakhiri eksekusi program sekarang juga
  • SIGTERM, mengakhiri eksekusi program
  • SIGSEV, diterima ketika program melakukan segmentation violation
  • SIGSTOP, menghentikan sementara suatu proses sekarang juga
  • SIGCONT, melanjutkan kembali program yang di stop
  • SIGINT, interrupt ke suatu proses
     Terdapat 2 cara mengirimkan sinyal ke proses, yaitu dengan perintah kill ( kill -SIGKILL pid) atau dengan menggunakan definisi system call kill().
     Agar proses induk bisa menunggu proses anaknya selesai, maka membutuhkan system call wait(). wait() akan memblok eksekusi program sampai salah satu proses anaknya mati.
 
   


Tidak ada komentar:

Posting Komentar