haloo teman teman pada kesempatan kali ini saya akan berbagi sedikit tentang daemon
Daemon adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki terminal pengontrol. Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima request dan menjalankan responsnya. daemon berjalan dalam previlege super user.
berikut ini adalah langkah langkah untuk membuat daemon dengan bahasa c.
1. memasukkan library library berikut
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>
library2 itu diperlukan untuk membuat sebuah daemon.
2. membuat sebuah proses menjadi proses induk dan anak kemudian kita membunuh proses induknya.
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
Dari langkah tersebut kita akan mendaptkan sebuah proses anak yang melanjutkan program setelah induknya mati, sehingga kita mendapatkan sebuah proses yang hampir bekerja pada backround.
3. membuat proses tersebut bekerja secara independen
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
Langkah ini dilakukan dengan memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah session ID yang baru.
4. Menutup standar I/O deskriptor yang diwarisi
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
Untuk mencegah terjadinya intervensi dari user serta untuk pengamanan, maka standar I/O descriptor dan descriptor yang diwarisi dari proses induk harus ditutup. Ada 3 jenis standar I/O descriptor : STDIN (standar input), STDOUT (standar output), STDERR (standar error).
5. melakukan masking pada file creation
umask(0);
umask(0);
Daemon biasanya memproteksi setiap file yang dibuat, dengan alasan keamanan. Fungsi umask() akan mencegah file-file previleges yang tidak aman dalam setiap pembuatan file.
6. mengganti direktori
if((chdir"\")<0)
{
exit(EXIT_FAILURE);
}
if((chdir"\")<0)
{
exit(EXIT_FAILURE);
}
Program daemon tentunya harus memiliki sebuah direktori aktif dan selalu ada sehingga dapat bekerja. Fungsi chdir() digunakan di mana ketika return -1 berarti gagal.
7. membuat inti daemon
while(1)
{
//suatu kode untuk dieksekusi
}
while(1)
{
//suatu kode untuk dieksekusi
}
Di dalam while tersebut akan berisi kode-kode untuk dieksekusi. Bisa dikatakan bahwa program utama daemon terletak setelah while tersebut.
berikut adalah contoh dari sebuah daemon yg telah saya buat
Daemon tersebut akan mengeluarkan kata halo tiap 2 detik apabila dijalankan.
sekarang kalian sudah paham tentang membuat daemon pasti bingung "apa sih gunanya daemon itu?"
seperti yg sudah dijelaskan di atas daemon adalah sebuah program yg dibuat dengan membunuh parent proses dan hanya meninggalkan child prosess agar proses tersebut sulit untuk dilacak. seperti virus.




