apa itu daemon?
daemon
adalah suatu proses yang dibuat untuk bekerja secara otomatis karena tidak
memiliki terminal pengontrol dan melakukan pekerjaannya dibalik layar atau yang
biasa disebut sebagai background process. daemon tidak berhubungan langsung
dengan user (user interface).
bagaimana proses pembuatan
daemon?
fork parent process dan
penghentian parent process
langkah awal untuk membuat daemon
adalah dengan melakukan forking. apa fungsinya? agar process baru dibuat dan
parent process nya mati. setelah proses induk mati sistem akan mengira bahwa
proses telah selesai. sehingga kembali ke terminal user. dan yang melanjutkan
program adalah child processnya. setelah itu, kita harus mengubah mode file menggunakan
UMASK(0)
daemon akan menulis beberapa file
termasuk logs. maka mode file tersebut harus disesuaika agar dapat ditulis dan
dibaca dengan benar. caranya gimana? dengan umask (). selanjutnya buat Unique Session ID
(SID). apa gunanya membuat SID? SID
dibuat dari kernel agar dapat beroperasi. caranya adalah dengan menggunakan
setsid(). nantinya, setsid() akan memiliki return tipe sama seperti fork(). lalu kita harus memastikan bahwa
directori kerja yang aktif ada di tempat yang selalu ada. pakai fungsi chdir(). pembuatan daemon hampir selesai. selanjutnya kita harus menutup File Descriptor
Standar. fungsi
close() digunakan untuk menutup file
deskriptor standar. kita perlu melakukannya agar file deskriptor tidak berulang
dan mengurangi potensi bahaya dalam hal keamanan. file deskriptor standar itu
sendiri meliputi (STDIN,STDOUT,STDERR). inti dari kerja daemon adalah dengan membuat loop utama. hal ini dilakukan agar daemon bekerja dalam waktu yang ditentukan.
berikut adalah contoh soal dari modul 2 yang menggunakan daemon :
Uul adalah seorang programer
handal dan berani. Suatu hari, dia ingin membuat sebuah virus bernama “Virus
Quotes 2 Menit”, dimana virus tersebut terdiri dari file aplikasi virus dan
daftar quotes dalam sebuah file bernama virus.txt. Jika virus ini ada dalam komputer
anda, maka akan muncul pop-up dari semua isi file virus.txt yang terpisah dengan
tanda delimiter koma (,) satu persatu setiap 2 menit sekali. Sebagai praktikan sisop
yang pintar, bantulah Uul untuk membuat virus tersebut!
Penyelesaian : kita harus membuat
virus dimana virus tersebut akan mengeluarkan pop up dari daftar yang ada di
dalam virus.txt yang terpisah dengan tanda delimeter koma satu persatu setiap
2menit sekali.
langkah :
1.
Membuat virus.txt yang berisikan quotes yg akan
di-pop-up, pisahkan dengan koma(,).
2.
Membuka virus.txt dan mengambil kata lalu
dimasukkan ke variabel yg diinginkan (pop)
3.
Menggunakan strtok untuk memotong dengan koma
4.
Menggunakan zenity ( perintah agar bisa pop up)
Uul adalah seorang programer
handal dan berani. Suatu hari, dia ingin membuat sebuah virus bernama “Virus
Quotes 2 Menit”, dimana virus tersebut terdiri dari file aplikasi virus dan
daftar quotes dalam sebuah file bernama virus.txt. Jika virus ini ada dalam komputer
anda, maka akan muncul pop-up dari semua isi file virus.txt yang terpisah dengan
tanda delimiter koma (,) satu persatu setiap 2 menit sekali. Sebagai praktikan sisop
yang pintar, bantulah Uul untuk membuat virus tersebut!
Penyelesaian : kita harus membuat
virus dimana virus tersebut akan mengeluarkan pop up dari daftar yang ada di
dalam virus.txt yang terpisah dengan tanda delimeter koma satu persatu setiap
2menit sekali.
langkah :
1.
Membuat virus.txt yang berisikan quotes yg akan
di-pop-up, pisahkan dengan koma(,).
2.
Membuka virus.txt dan mengambil kata lalu
dimasukkan ke variabel yg diinginkan (pop)
3.
Menggunakan strtok untuk memotong dengan koma
4.
Menggunakan zenity ( perintah agar bisa pop up)
int main()
{
FILE
*pFile;
char abc [100], pop[100];
char
*pch;
//daemon
pid_t
pid, sid;
pid
= fork();
if
(pid<0) {
exit(EXIT_FAILURE);
}
if
(pid>0) {
exit(EXIT_SUCCESS);
}
umask
(0);
sid
= setsid ();
if
(sid<0){
exit(EXIT_FAILURE);
}
//membuka fie virus.txt
pFile
= fopen("virus.txt","r");
fgets(pop,100,pFile) ;//ambil
kata dr virus.txt
if (pFile ==
NULL) perror ("Error opening file"); //kalo virus.txt kosong jadi
error
while (1)
{
strcpy(abc,pop);//copy
dr pop ke abc
pch
= strtok(abc,",");//dipotong pake koma
while
(1)
{
char
temp[]="zenity --warning --text='";//ini perintah pop up
strcat(temp,pch);
//gabungin zenity &kata
strcat(temp,"'");//gabungin
lagi koma atas
system(temp);
pch
= strtok(NULL,","); //dikasih null biar lanjut ga diulang2
sleep(120);
//quotes keluar setiap 120 detik sekali
}
}
exit(EXIT_SUCCESS);
fclose(pFile);
}