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);Berikut adalah source code daemon process:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(void)
{
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);
}
Tidak ada komentar:
Posting Komentar