comment 0

Template Sistem Daemon Pada Linux

Apa itu daemon linux?

Untuk memahaminya, coba perhatikan diagram alur (flowchart) berikut ini :

daemon

Sudah bisa memahaminya? Bagi yang masih belum memahami silahkan baca penjelasan berikut ini :

Daemon adalah sebuah proses yang bekerja di background serta tidak memiliki interface pengontrol, daemon memiliki proses ID yang bisa dilihat melalui perintah ps -a, untuk menghentikan proses daemon bisa dilakukan dengan mengetikkan perintah kill [proses ID]

hack-like-pro-linux-basics-for-aspiring-hacker-part-8-managing-processes.w654

 

Nah, sekarang bagaimana kode untuk membuat daemon service? Berikut ini akan saya tuliskan kode dasar yang digunakan pada pembuatan daemon process pada linux yang ditulis menggunakan bahasa C. Untuk mengeditnya silahkan bereksperimen sesuai dengan kebutuhan 🙂

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

using namespace std;

#define DAEMON_NAME "vdaemon"

void process(){

    syslog (LOG_NOTICE, "Writing to my Syslog");
}   

int main(int argc, char *argv[]) {

    //Set our Logging Mask and open the Log
    setlogmask(LOG_UPTO(LOG_NOTICE));
    openlog(DAEMON_NAME, LOG_CONS | LOG_NDELAY | LOG_PERROR | LOG_PID, LOG_USER);

    syslog(LOG_INFO, "Entering Daemon");

    pid_t pid, sid;

   //Fork the Parent Process
    pid = fork();

    if (pid < 0) { exit(EXIT_FAILURE); }

    //We got a good pid, Close the Parent Process
    if (pid > 0) { exit(EXIT_SUCCESS); }

    //Change File Mask
    umask(0);

    //Create a new Signature Id for our child
    sid = setsid();
    if (sid < 0) { exit(EXIT_FAILURE); }

    //Change Directory
    //If we cant find the directory we exit with failure.
    if ((chdir("/")) < 0) { exit(EXIT_FAILURE); }

    //Close Standard File Descriptors
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);

    //----------------
    //Main Process
    //----------------
    while(true){
        process();    //Run our Process
        sleep(60);    //Sleep for 60 seconds
    }

    //Close the log
    closelog ();
}


silahkan edit dan simpan menggunakan nama daemonprocess.c . Untuk meng-compile silahkan ketikkan
gcc -o daemonprocess daemonprocess.c

untuk menjalankannya ketikkan :
./daemonprocess

Selamat berkarya, salam open source :)

Leave a Reply

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *