Process ID di Linux
Setiap process di linux memiliki Process ID atau yang bisa disingkat PID. PID merupakan 16 bit integer yang keluar secara berurutan. Setiap process memiliki parent process kecuali process init. Berikut merupakan contoh kode untuk mendapatkan PID:
Membuat
Proses Baru
(Proses Anak)
Ada 3 cara untuk membuat proses baru melalui kode program :
1. Fungsi system( )
Fungsi ini menjalankan shell command
Definisi/deklarasi yang digunakan :
- #include <stdlib.h>
- int system (const char * string);
Contoh kode :
Fungsi ini tidak disarankan karena tidak portable, menghabiskan resource, dan berbahaya (komputer bisa jadi tidak dapat digunakan lagi ketika ceroboh)
2. Fork ( )
Fork( ) akan menduplikasi proses yang ada. Proses hasil duplikasi disebut proses anak.
Definisi/deklarasi fungsi ini:
- #include <unistd.h>
- pid_t fork(void);
- pid_t vfork(void);
Return value dari fork() menentukan sedang ada di proses mana
- > 0 → ada di parent process, return value merupakan pid dari child process
- = 0 → ada di child process
- < 0 → error ^_^v
Contoh kode menggunakan fork ( )
3. Keluarga exec
Ciri-ciri fungsi exec* yaitu dapat mengganti program yang sedang berjalan pada suatu proses. Berikut merupakan macam-macam Keluarga exec :
- Execv
- Execvp
- Execve
- Execlp
- Execle
Signal
Signal adalah sebuah event yang dikirimkan ke suatu proses oleh proses itu sendiri atau proses lain. Fungsi ini digunakan untuk mengirimkan notifikasi kepada suatu proses bahwa ada suatu event. Definisi/deklarasi dari fungsi ini adalah :
- #include <sys/types.h>
- #include <signal.h>
- int kill(pid_t pid, int sig);
Berikut signal-signal yang biasa digunakan :
- SIGKILL : mengakhiri eksekusi program sekarang juga
- SIGTERM : mengakhiri eksekusi program
- SIGSEGV : 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
Mengirimkan sinyal ke proses ada dua cara yaitu:
1. Menggunakan perintah kill
Contoh : kill -SIGKILL pid
2. Menggunakan system call kill()
Definisi/deklarasi fungsi :
- #include <sys/types.h>
- #include <signal.h>
- int kill(pid_t pid, int sig);
system call wait ( )
Agar proses induk bisa menunggu proses anaknya selesai, maka dibutuhkan system call wait( ). Wait( ) akan memblok eksekusi program sampai salah satu proses anaknya mati. Definisi/deklarasi fungsi tersebut antara lain :
- #include <sys/types.h>
- #include <sys/wait.h>
- pid_t wait(int *status)
- pid_t waitpid(pid_t pid, int *status, int options);

Komentar
Posting Komentar