Apa sih itu Daemon ?
Daemon adalah proses yang berjalan di balik layar (background) dan tidak
berinteraksi langsung dengan user melalui standard input/output , di windows ini dikenal dengan sebutan service , nah disini kita akan membahasnya di OS LINUX , dan penerapannya .. (pantengin).
Dalam pembuatan Daemon , ada 6 proses utama , namun jangan lupakan pemanggilan direktori-direktori(header) yang diperlukan ya nanti bisa FAIL .
Kita menerapkanya dalam bentuk coding format .c ya ..
Berikut header yang sobat butuhkan untuk proses diamon ..
#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>
Kita sekarang masuk 6 proses utama pembuatan Daemon..
1 .Fork Parent Process dan penghentian Parent Process.
Melakukan forking untuk membuat process baru kemudian mematikan Parent Process. Process induk yang mati akan membuat system mengira proses telah selesai sehingga akan kembali ke terminal user .Proses anak yang melanjutkan program setelah proses induk dimatikan.
pid_t pid, sid;
pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
}
if (pid > 0) {
exit(EXIT_SUCCESS);
}
pid_t pid, sid;
pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
}
if (pid > 0) {
exit(EXIT_SUCCESS);
}
2. Mengubah mode file
Untuk menulis beberapa file (termasuk logs) yang dibuat oleh daemon, mode file harus diubah untuk memastikan bahwa file tersebut dapat ditulis dan dibaca secara benar. Pengubahan mode file menggunakan implementasi umask().
umask(0);
umask(0);
3. Membuat Unique Session ID (SID)
Child Process harus memiliki unik SID dari kernel untuk dapat beroperasi.
Sebaliknya, Child process menjadi Orphan Proses pada system. Tipe pid_t yang
dideklarasikan pada bagian sebelumnya, juga digunakan untuk membuat SID
baru untuk child process. Pembuatan SID baru menggunakan implementasi
setsid(). Fungsi setsid() memiliki return tipe yang sama seperti fork().
sid = setsid();
if (sid < 0) {
exit(EXIT_FAILURE);
}
4. Mengubah Directory Kerja
if ((chdir(“/”)) < 0) {
exit(EXIT_FAILURE);
}
5.Menutup File Descriptor Standar
Salah satu dari langkah terakhir dalam mengeset daemon adalah menutup file
descriptor standar (STDIN, STDOUT, STDERR). Karena daemon tidak perlu
menggunakan kendali terminal, file descriptor dapat berulang dan berpotensi
memiliki bahaya dalam hal keamanan. Untuk mengatasi hal tersebut maka
digunakan implemtasi fungsi close() .
close(STDIN_FILENO);
close(STDERR_FILENO);
6.Membuat loop utama
Inti kerja dari daemon . Proses ini yang akan dilakukan saat pemanggilan programnya .
while (1) {
*/berikan implementasi sesuai yang anda inginkan , program kali ini saya akan mencoba membuat sebuah folder menyimpan extensi file tertentu */
sleep(3);
}
exit(EXIT_SUCCESS);
}
Nah , begitulah prinsip dan bentuk dasar dari daemon , kali ini saya akan membuat contoh pengaplikasian proses daemon dengan membuat folder yang hanya menyimpan ext file .doc , so ? selain extensi file doc dalam folder tersebut akan di usir / dipindahkan ke folder lain .
CHECK THIS OUT !
Kita pindahkan tempat proses daemon akan berjalan , kita isi perintah ..
if ((chdir(“/home/bonardos/MODUL2/SpecifiedFolder”)) < 0)
while (1) {
*/berikan implementasi sesuai yang anda inginkan , program kali ini saya akan mencoba membuat sebuah folder menyimpan extensi file tertentu */
sleep(3);
}
exit(EXIT_SUCCESS);
}
Nah , begitulah prinsip dan bentuk dasar dari daemon , kali ini saya akan membuat contoh pengaplikasian proses daemon dengan membuat folder yang hanya menyimpan ext file .doc , so ? selain extensi file doc dalam folder tersebut akan di usir / dipindahkan ke folder lain .
CHECK THIS OUT !
Kita pindahkan tempat proses daemon akan berjalan , kita isi perintah ..
if ((chdir(“/home/bonardos/MODUL2/SpecifiedFolder”)) < 0)
{
exit(EXIT_FAILURE);
}
Dalam while (1) kita isi perintah ..
while (1) {
system("cd /home/bonardos/MODUL2/SpecifiedFolder");
system("find . -type f ! -name '*.doc' -exec mv {} /home/bonardos/MODUL2/abstrak ';'");
}
Fungsi system yang pertama akan memindahkan directory kerja loop kita ke dalam folder saya yang bernama SpecifiedFolder*.
Fungsi system yang kedua akan mencari type file yang bukan extensi .doc lalu mengeksekusi nya dengan perintah move ke folder saya yang bernama abstrak*.
NB : * = ga harus sama
Kita coba run ... cara compile nya dalam .c di terminal kita ketikkan ..
gcc *sourcecodinganmu* -o *fileoutput*
contoh disini saya ketik ::
gcc daemonplus3.c -o no3
Berikut SS Sebelum dan sesudah program di jalankan ...

exit(EXIT_FAILURE);
}
Dalam while (1) kita isi perintah ..
while (1) {
system("cd /home/bonardos/MODUL2/SpecifiedFolder");
system("find . -type f ! -name '*.doc' -exec mv {} /home/bonardos/MODUL2/abstrak ';'");
}
Fungsi system yang pertama akan memindahkan directory kerja loop kita ke dalam folder saya yang bernama SpecifiedFolder*.
Fungsi system yang kedua akan mencari type file yang bukan extensi .doc lalu mengeksekusi nya dengan perintah move ke folder saya yang bernama abstrak*.
NB : * = ga harus sama
Kita coba run ... cara compile nya dalam .c di terminal kita ketikkan ..
gcc *sourcecodinganmu* -o *fileoutput*
contoh disini saya ketik ::
gcc daemonplus3.c -o no3
Berikut SS Sebelum dan sesudah program di jalankan ...
Folder Specified isi nya ..
Setelah di run program no3 nya .... dan terjadi ...
Dan isi folder abstrak ..
Cek Proses daemon apakah dia masih berjalan dan cara untuk menghentikanya , caranya begini nih ...
di terminal kita ketik ->
ps aux
maka akan muncul seperti ini ..
Sobat bisa lihat kan di proses ID nomor 4452 ada proses no3 sedang berjalan ?? itu tandanya daemon kita berhasil !!!
Nah untuk menghentikan proses daemon cukup ketik di terminal ..
pkill no3
Lihat kan ? Proses no3 sudah hilang ...
Semoga penjelasanya jelas ya ... terimakasih sudah mengunjungi blog saya ... Mampir lagi yoooo jangan lupa like and commentnya ...
Tidak ada komentar :
Posting Komentar