Sabtu, 17 Oktober 2015

Unstoppable Daemon


Pernahkah Anda mengalami gangguan-gangguan desktop pada komputer Anda? Misalnya pop-up yang muncul tiap beberapa detik sekali, file yang sering terbuka sendiri tanpa di-klik, atau gambar yang tiba-tiba ter-edit dengan sendirinya?

Daemon bisa jadi adalah penyebab peristiwa-peristiwa tersebut. Apakah yang dimaksud dengan daemon? Daemon ialah process yang berjalan pada background yang tidak  memerlukan interaksi langsung dengan user. Dengan kata lain, user tidak akan bisa menghentikan daemon secara langsung. Bisa Anda bayangkan daemon yang dibuat dengan tujuan buruk, misalnya otomatis mendownload gambar-gambar tidak senonoh tanpa Anda bisa berbuat apa-apa. Untuk itu, pengetahuan mengenai daemon amatlah diperlukan untuk mencegah hal-hal tersebut.

Membuat daemon amatlah mudah bahkan bagi orang awam. Anda hanya perlu memahami bahasa c dan Anda akan dengan mudah membuat suatu program daemon. So, check it out!

=========================================================

Untuk membuat daemon, beberapa hal ini perlu diperhatikan :

- Daemon adalah suatu orphan process (child process yang kehilangan parent-nya). Untuk itu Anda perlu membuat child process kemudian membunuh parent-nya

- Mode file daemon harus bisa dibaca. Maka, Anda musti menggunakan fungsi umask

- Daemon yang merupakan orphan process, awalnya tidak memiliki Session ID sehingga tidak dapat berjalan. Agar process dapat berjalan, maka Anda perlu menggunakan fungsi setsid

- Daemon selalu aktif pada background, karena itu daemon haruslah berada pada direktori yang selalu aktif. Untuk itu Anda harus menggunakan fungsi chdir (change directory) untuk memindahkan process ke direktori yang selalu aktif yaitu home

- Menutup File descriptor standar untuk daemon, karena file descriptor bisa benar-benar disturbing ketika daemon dijalankan karena bisa berulang-ulang

- Kodingan Anda harus berada di fungsi while, karena inti dari daemon adalah dilakukan berulang-ulang secara kontinu

========================================================

Berikut ini adalah pembuatan daemon dalam bahasa c

#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>

int main (void)
{
pid_t pid, sid;
pid=fork();
if (pid<0) exit (EXIT_FAILURE);
else if (pid>0) exit (EXIT_SUCCESS);
umask(0);
sid=setsid();
if (sid<0) exit (EXIT_FAILURE);
if ((chdir("/"))<0) exit (EXIT_FAILURE);
close(STDIN_FILENO);
//close(STDOUT_FILENO);
close(STDERR_FILENO);
while(1)
{
printf("SELAMAT DATANG\n");
sleep(2);
}
exit(EXIT_SUCCESS);
}

process diatas artinya menampilkan kalimat "SELAMAT DATANG" di terminal tiap 2 detik sekali.
Untuk menghentikan daemon caranya cukup rumit. Anda harus mengetahui pid dari process daemon tersebut. Kemudian Anda bisa mengehentikannya dengan funngsi kill <pid>

Tidak ada komentar:

Posting Komentar