Apa itu daemon?
Bagaimana cara membuat daemon?
Kenapa pengejaannya mirip dengan demon?
Apakah memang berhubungan dengan demon (baca: setan)?
Jika terlintas di pikiran teman-teman pertanyaan seperti itu (terutama pertanyaan nomer 3 dan 4) berarti kita sepemikiran, hehe.
Oke, serius.
Jadi, yang dimaksud daemon disini adalah proses yang berjalan di background tanpa diketahui user. Mungkin penamaan daemon ini datang dari sifatnya yang seperti hantu/setan ini, namun saya juga tidak tahu pasti, hehe.
Walaupun sifatnya seperti hantu/setan, membuat daemon tidaklah seperti setan (baca: susah). Pembuatannya hanya melibatkan source code C yang dikenal sebagai dasar seluruh bahasa pemrograman. Nah, mari kita mulai proses pembuatannya.
Pertama, kita harus melakukan forking parent process sebelum mematikannya. Mematikan proses induk diperlukan agar system mengira proses telah selesai sehingga kembali ke terminal. Padahal, masih ada proses anak yang melanjutkan proses induk itu. Langkah ini dapat dikerjakan dengan membuat code seperti ini:
Selanjutnya, untuk menulis file yang dibuat oleh daemon, dibutuhkan perubahan mode file agar benar-benar bisa ditulis dan dibaca. Untuk itu dibutuhkan implementasi umask(). Setelah itu, child process yang kita buat sebelumnya harus kita berikan unique SID, agar tidak lagi bertindak sebagai orphan process. Caranya bisa dengan menggunakan setsid(). Berikut implementasi dari umask() dan setsid():
Setelah itu, kita harus melakukan perubahan direktori kerja untuk mengambil proses daemon itu. Untuk melakukannya bisa menggunakan chdir(), seperti gambar dibawah. Ingat, direktori yang dibutuhkan adalah direktori tempat kita menyimpan daemon.
Lalu, kita harus menutup file descriptor standar dengan menggunakan fungsi close(). Perhatikan bahwa STDOUT dijadikan dokumentasi karena kita membutuhkan output dari daemon agar kita tahu bahwa daemon berjalan.
Terakhir, buatlah tugas dari daemon tersebut. Kita bisa memberikan tugas apapun yang kita mau, selama itu masih logis untuk dilakukan oleh komputer. Disini aku membuat daemon yang mencatat setiap proses dari user yang sedang login kedalam sebuah logfile berekstensi .txt . Untuk itu, kita bisa menggunakan command ps ux, seperti gambar dibawah. Fungsi sleep() digunakan untuk memberi jeda perulangan daemon melakukan tugasnya.
Jika kita gabungkan seluruh langkah tadi, maka seharusnya source code akan menjadi seperti ini:
Nah, source code telah selesai. Selanjutnya, kita harus melakukan compiling dari source code menjadi executable file. Caranya dengan mengetikkan sintaks "gcc nama_source_code.c -o nama_executable_file.o". Setelah itu, daemon siap dijalankan.
Compiling source code dan running program
Keberadaan file B10_log.txt sebagai bukti bahwa daemon process berjalan
Isi dari logfile
Yah, sekian pembuatan daemon kali ini. Bagaimana? Mudah kan? Semoga membantu yaa :)









No comments:
Post a Comment