Minggu, 18 Oktober 2015

[TUTORIAL] DAEMON

      Pertama kita bahas pengertiannya terlebih dahulu, apa itu daemon? Daemon adalah proses yang berjalan di balik layar (background) dan tidak berinteraksi langsung dengan user melalui standard input/output.

      Untuk membuat proses, caranya mudah, jalankan saja program yang ingin kamu buat prosesnya, dan secara otomatis prosesnya akan berjalan juga.

      Ada 6 langkah pembuatan daemon, berikut langkah-langkahnya:
1. Fork Parent Processs dan penghentian Parent Process
    Buat sebuah proses baru, kemudian matikan proses induknya.

2. Mengubah mode file menggunakan UMASK(0)
    Ubah mode file untuk memastikan file dapat ditulis dan dibaca secara benar dengan implementasi       umask().

3. Membuat Unique Session ID (SID)
    Buatlah SID baru dengan implementasi setsid(), fungsi ini memiliki return tipe sama dengan fungsi     fork().

4. Mengubah Directory Kerja
    Ubah direktori kerja ke tempat yang pasti akan selalu ada, dengan menggunakan fungsi chdir().           Fungsi ini akan mengembalikan nilai -1 jika gagal.

5. Menutup File Descriptor Standar
    Kemudian tutup file descriptor standar (STDIN, STDOUT, STDERR). Gunakanlah fungsi close()       untuk menghindari file descriptor yang berulang.

6. Membuat Loop utama (inti kerja dari daemon)
    Terakhir buatlah looping untuk menjalankannya seperti berikut.

      Setelah semua proses dilakukan, jadinya adalah seperti berikut.


      Sekarang coba kita implementasikan pada sebuah masalah, berikut adalah contoh masalahnya.

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!

1. Pertama-tama buatlah langkah 1-5 yang telah kita pelajari di atas tadi seperti berikut.

#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>

int main(void){
pid_t pid, sid;
pid=fork();
if (pid<0){
exit(EXIT_FAILURE);
}
if (pid>0){
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if ((chdir("/home/dito"))<0){                           //sesuai dengan direktori yang kalian miliki
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);

close(STDERR_FILENO);

//program inti

exit(EXIT_SUCCESS);

}

2. Lalu buatlah program intinya, seperti berikut ini.

FILE * file;
file=fopen("virus.txt","r");
char inp;
int count=0;
char print[100];
while(1){
fscanf(file, "%c", &inp);
if(inp==',')
        {
            char temp[]="zenity --info --text=\"";
            strcat(temp,print);
            strcat(temp,"\"");
            system(temp);
            count=0;
memset(temp,'\0',100);
            sleep(2);
        }
else if(inp=='\0') break;
else if(inp!=','){
            print[count]=inp;
            count++;
                }
}

fclose(file);

Program inti untuk menampilkan tulisan-tulisan tersebut berada di dalam if yang pertama, if kedua untuk mengakhiri program jika tulisan pada file virus.txt sudah habis, dan if ketiga untuk terus menyimpan karakter selama karakter itu bukan tanda ',' .

Selesai, cobalah program yang telah kita buat tadi sendiri :)

Popular Posts

Blogroll

Tentang Gw / About Me

Pati, Jawa Tengah, Indonesia
Namaku Dito. Lengkapnya Pramudito Hapriarso. Kelahiran 1996. Sekarang menetap di Indonesia.

About

Blogger templates

Blogger news

Pages - Menu

Pengikut