Cool Blue Outer Glow Pointer

Apa itu Daemon ?

/
0 Comments
Daemon adalah sebuah proses yang bekerja secara background, jadi proses ini tidak dapat dilihat user. Kita menggunakan daemon supaya program yang kita buat dijalankan secara otomatis. Daemon yang kita buat akan terus berjalan sampai kita menghentikan proses daemon yang kita buat dengan cara kill PID dari proses daemon yang kita buat. Di sini saya akan menjelaskan bagaimana cara membuat Daemon dengan bahasa C yang telah saya pelajari sebelumnya.
Langkah-langkah dalam membuat daemon :
1. Langkah pertama untuk membuat Daemon  adalah dengan menjadikan proses tersebut jadi induk dan anak dengan forking, kemudian kill proses induk. Dengan matinya proses induk maka sistem operasi kita akan mengira bahwa proses induk tersebut telah selesai. Dengan cara ini kita akan mendapat sebuah proses anak, sehingga kita mendapatkan proses yang hampir bekerja secara background. Untuk melakukan proses tersebut kita bisa melakukannnya seperti berikut :
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
}
umask(0);
2. Langkah kedua adalah dengan memberikan Session ID yang baru pada Daemon  yang kita buat dengan cara :
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
3. Langah ketiga adalah mengubah directory ke directory yang selalu hidup, artinya directory tersebut tidak bisa di unmount saat sistem operasi kita berjalan. Di sini saya menggunakan directory root karena root tidak mungkin di unmount dan akan selalu hidup saat sistem operasi kita berjalan. Untuk melakukannya begini caranyaa :
if((chdir(“/ ”)) < 0)
{
exit(EXIT_FAILURE);
}
4. Langkah terakhir adalah menutup standard I/O deskriptor yang diwariskan proses induk ke proses anak. Ada 3 jenis standard I/O deskriptor yaitu STDIN, STDOUT, STDEER. Begini cara menutup standard I/O deskriptor :
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
Diatas adalah langkah-langkah dalam membuat Daemon. Untuk membuat program yang berjalan dengan proses Daemon berikut adalah caranya dengan menggunakan bahasa pemrograman 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;
        
        /* melakukan forking */
        pid = fork();
        if (pid < 0) {
                exit(EXIT_FAILURE);
        }
        if (pid > 0) {
                exit(EXIT_SUCCESS);
        }
        umask(0);
              
        /* membuatkan Session ID baru untuk proses anak */
        sid = setsid();
        if (sid < 0) {
                /* Log the failure */
                exit(EXIT_FAILURE);
        }
        
        /* ubah direktory nya ke root*/
        if ((chdir("/")) < 0) {
                /* Log the failure */
                exit(EXIT_FAILURE);
        }
        
        /* menutup standard I/O deskriptor */
        close(STDIN_FILENO);
        close(STDOUT_FILENO);
        close(STDERR_FILENO);
     
        while (1) {
           /* masukan coding an program kalian di sini
              supaya dijalankan oleh proses Daemon  */
           
           sleep(30); 
           /* buat program kalian berhenti sejenak 
              sebelum melakukan looping selanjutnya */
        }
   exit(EXIT_SUCCESS);
}


You may also like

No comments:

Powered by Blogger.