Sabtu, 17 Oktober 2015

DAEMON TUTORIAL

Dalam kesempatan kali ini , kita akan membuat sebuah daemon dan menjalankannya pada terminal Linux.

Pertama-tama mari kita mengenal terlebih dahulu daemon dan macam-macam proses yang terlibat.

Apa itu Daemon ??
Daemon merupakan sebuah program yang berjalan sendiri , dibalik layar dan tidak memiliki interface untuk dikontrol , daemon juga tidak dapat berinteraksi langsung dengan user.

Bagaimana cara membuat sebuah Daemon ??
Terdapat 6 tahapan dalam membuat Daemon

1. Fork Parent Processs dan penghentian Parent Process
                 Langkah awal dalam pembuatan daemon adalah dengan membuat proses baru yang dilakukan dengan forking . Setelah proses terbentuk , matikan proses induk . Proses induk yang mati akan menyebabkan OS mengira proses telah selesai dan kembali ke terminal . Dari rangkaian proses diatas , kita akan mendapatkan hasil yang berupa proses anak yang meneruskan program setelah proses induknya mati . Hal ini dilakukan untuk mendapatkan proses yang bekerja pada background.

-------------------------------------------------------------------------------------------------------------------------
pid_t pid, sid;
        pid = fork();
        if (pid < 0)
        {
                exit(EXIT_FAILURE);
        }
        if (pid > 0)
        {
                exit(EXIT_SUCCESS);
        }
--------------------------------------------------------------------------------------------------------------------------

2. Mengubah mode file menggunakan UMASK(0);
                 umask merupakan sebuah command yang digunakan untuk menset hak akses dari file yang dibuat oleh proses yang berjalan saat itu . Jadi mengeset umask(0) akan membuat proses yang tidak memiliki batasan akses , dalam arti lain mempunyai akses penuh .

-------------------------------------------------------------------------------------------------------------------------

          umask(0);

--------------------------------------------------------------------------------------------------------------------------
             
3. Membuat Unique Session ID (SID)
                 Dalam langkah kali ini , akan dilakukan pemanggilan fungsi setsid() yang digunakan agar proses anak memiliki sebuah SID baru . Hal ini dilakukan dikarenakan Daemon harus bekerja secara independen , termasuk proses yang menjalankannya .

-------------------------------------------------------------------------------------------------------------------------

            sid = setsid();
            if (sid < 0)
            {
                exit(EXIT_FAILURE);
             }

--------------------------------------------------------------------------------------------------------------------------

4. Mengubah Directory Kerja
                 Direktory kerja yang aktid pada daemon diharuskan direktori yang selalu hidup. Hal ini dilakukan dengan fungsi chdir().

-------------------------------------------------------------------------------------------------------------------------
if ((chdir("/")) < 0)
        {
                exit(EXIT_FAILURE);
        }
--------------------------------------------------------------------------------------------------------------------------

5. Menutup File Descriptor Standar
                 Agar tidak ada gangguan dari user , maka standar I/o harus ditutup. Hal ini dilakukan dikarenakan daemon tidaklah bergantung pada terminal maupun user . Terdapat 3 jenis standar I/O yaitu : STDIN ( Standar Input ) , STDOUT ( Standar Output ) , STDERR ( Standar Error ).

-------------------------------------------------------------------------------------------------------------------------
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
--------------------------------------------------------------------------------------------------------------------------

6. Membuat Loop utama (inti kerja dari daemon)
                 Dan yang terakhir dalam pembuatan daemon adalah dengan membuat looping yang akan selalu berjalan selama jangka waktu yang ditentukan.

-------------------------------------------------------------------------------------------------------------------------
        while(1)
        {
sleep(23);
        }
        exit(EXIT_SUCCESS);
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------

Contoh Daemon Sederhana




PENJELASAN
Daemon diatas akan menampilkan sebuah notif yang bertuliskan Love_Your_Life setiap 23 detik sekali.


Cara Menjankan Program Daemon


PENJELASAN
Pertama kita diharuskan untuk mengcompile daemon (.c) yang kita buat , caranya dengan menuliskan "gcc (nama_daemon).c -o (nama_program)" pada terminal.
Misal daemon yang kita punya adalah lapres.c dan akan dicompile menjadi program yang bernama lapres.
Contoh :

-------------------------------------------------------------------------------------------------------------------------

          -gcc lapre.c -o lapres

--------------------------------------------------------------------------------------------------------------------------

Setelah itu jalankan program lapres dengan cara ./(nama_program)
Contoh :

-------------------------------------------------------------------------------------------------------------------------
./lapres
--------------------------------------------------------------------------------------------------------------------------




Sekian Tutorial saya kali ini . Terima Kasih sudah membaca , semoga bermanfaat .