Saturday, October 17, 2015

Daemon di ubuntu


Daemon adalah service background process yang didesain untuk berjalan secara otomatis dengan sedikit/tidak terinterfensi oleh user. Daemon tidak boleh memiliki komunikasi secara langsung dengan user melalui terminal. Jadi bila kita memiliki daemon kita hanya bisa melihat pekerjaan daemon melalui file yang dikerjakan atau dari control proses di terminal. Dan berikut adalah cara untuk membuat daemon, yaitu
  1. MATIKAN PROSES PARENT

    Proses induk dimatikan supaya proses yang semula memiliki parent menjadi orphant proses. 
    pid_t pid;
    pid = fork();

    if (pid < 0) {
        exit(EXIT_FAILURE);
    }
    if (pid > 0) {
        exit(EXIT_SUCCESS);
    }
  2. UBAH MODE FILE MASK

    Untuk menulis file (termasuk log), yg dibuat daemon.
    Harus diubah untuk memastikan dapat ditulisi atau dibaca secara sesuai.

    umask(0);
    umask(0)  kita akan mendapat akses penuh dari file yang dibuat oleh daemon.
  3. BUKA LOG UNTUK PENULISAN

    Membuka sebuah log file di suatu lokasi pada sistem untuk penulisan. Untuk informasi debug dari daemon yang kita buat. gunakan standart input output file untuk lebih sederhananya.
  4. BUAT SEBUAH SESSION ID (SID) UNIK

    Proses anak harus mendapat SID unik dari kernel untuk dapat dijalankan.
    Jika tidak mendapat SID, maka proses anak akan menjadi yatim piatu pada sistem.

    pid_t sid;
    sid = setsid();
    if (sid < 0) {
        exit(EXIT_FAILURE);
    }
  5. UBAH DIREKTORI KERJA SAAT INI KE TEMPAT YANG AMAN

    Direktori kerja saat ini harus diubah ke tempat yang dijamin selalu ada. Direktori kerja diubah ke direktori root (/), dengan system call chdir.

    if ((chdir(“/”)) < 0) {
        exit(EXIT_FAILURE);
    }
  6. TUTUP FILE DESKRIPTOR STANDAR

    Langkah akhir, tutup file descriptor standar (STDIN, STDOUT, STDERR).

    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);
  7. MASUKKAN KODE DAEMON


    while (1) {
        sleep(30);
    }