Minggu, 18 Oktober 2015

tentang daemon

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);
}