Sabtu, 17 Oktober 2015

Daemon Process

Daemon Process
Pada post kali ini saya akan membahas tentang daemon process. Apa sih daemon process itu? Intinya daemon process adalah process yang masih berjalan meskipun kita menutup aplikasinya, sering disebut juga background process.
Nah untuk membuat daemon process diperlukan beberapa langkah dibawah ini:
1.       Fork Parent Process dan hentikan Parent Process.
2.       Ubah mode file menggunakam UMASK(0).
3.       Membuat Unique Session ID (SID).
4.       Mengubah directory kerja.
5.       Menutup File Descriptor Standar.
6.       Membuat Loop utama (core proses dari daemon).
Dari ke enam proses tersebut di post kali ini akan saya jelaskan satu satu biar tidak bingung.

1.       Fork Parent Process dan Hentikan Parent Process
Langkah pertama adalah dengan melakukan forking untuk pembuatan proses baru, apa itu forking? Forking atau fork process adalah sebuah operasi dimana sebuah proses membuat kopian dari dirinya sendiri . Setelah itu kita matikan parent processnya, parent process adalah process yang memiliki child process. Dengan matinya parent process, sistem akan menganggap bahwa proses tersebut telah berakir, padahal proses tersebut masih dilanjutkan oleh childnya yang telah dibuat dari forking.
2.       Ubah mode file
Langkah kedua adalah mengubah mode file menggunakan UMASK(). Mengapa hal ini diperlukan? Dalam prosesnya nanti kita akan membutuhkan semua akses ke dalam daemon, termasuk akses log filenya, nah dikarenakan itu kita akan mengubah permission access kita ke proses tersebut menggunakan UMASK().
3.       Membuat SID
Unique Section ID ini diperlukan agar child process yang telah dibuat tadi dapat berjalan, karena kernel tidak akan mengizinkan suatu proses berjalan tanpa adanya ID.
4.       Mengubah directory kerja
Setelah memiliki ID kita harus menentukan dimana daemon ini akan bekerja, biasanya akan di pilih tempat yang selalu ada dan tidak akan di hapus, di root directory misalnya.
5.       Menutup file descriptor standar

Menutup file descriptor standar(STDIN, STDOUT, STDERR) hal ini dilakukan karena daemon tidak membutuhkan kendali terminal, jika file descriptor tersebut tidak ditutup dapat memberikan potensi bahaya bagi daemon process.
6.       Membuat loop utama
Buat looping yang menentukan daemon bekerja setiap berapa detik ataupun selama berapa saat.

Berikut adalah source code daemon process:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(void)
{
  pid_t pid, sid; 
pid = fork();
if (pid < 0){
exit(EXIT_FAILURE); }  
if (pid > 0){
exit(EXIT_SUCCESS); }
umask(0);
sid = setsid();  
if (sid < 0){
exit(EXIT_FAILURE); }
  if ((chdir("/")) < 0){
  printf("test");
  exit(EXIT_FAILURE);  } 
close(STDIN_FILENO);
close (STDOUT_FILENO);close(STDERR_FILENO); 
           exit(EXIT_SUCCESS);
}
 

Tidak ada komentar:

Posting Komentar