Wednesday, 25 November 2015

HOW TO INFINITE POP UP A CONTENTS OF TXT FILE

Daemon adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki terminal pengontrol. Dalam sistem operasi Windows biasanya lebih dikenal dengan sebutan service. Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima request dan menjalankan responsnya. Contoh dari daemon ini misalnya adalah Apache Web Server HTTP daemon. Daemon ini bekerja pada background dan menerima request HTTP pada port tertentu (biasanya 80 atau 8080) dan memberikan respon terhadap request tersebut, berdasarkan tipe dari request tersebut.
Adapun hal-hal yang membedakan daemon dengan proses lainnya adalah: daemon tidak memiliki parent proses ID, daemon tidak memiliki pengontrol baik itu STDOUT, STDIN, maupun STDERR, dan daemon berjalan dalam previlege super user.
Berikut ini adalah beberapa cara untuk membuat daemon:
a. Forking dan pembunuhan Proses induk.
Langkah pertama dari pembuatan daemon adalah dengan menspawn proses menjadi induk dan anak dengan melakukan forking, kemudian membunuh proses induk. Proses induk yang mati akan menyebabakan sistem operasi mengira bahwa proses telah selesai sehingga akan kembali ke terminal user. Dari langkah tersebut kita akan mendaptkan sebuah proses anak yang melanjutkan program setelah induknya mati, sehingga kita mendapatkan sebuah proses yang hampir bekerja pada backround.
Contoh :







b. Membuat proses bekerja secara independen
Daemon harus bekerja secara independen daripada proses-proses lain, termasuk juga proses yang menjalankannya. Langkah bisa dilakukan dengan memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah session ID yang baru.
Contoh :



c. Menutup standar I/O deskriptor yang diwarisi
Untuk mencegah terjadinya intervensi dari user serta untuk pengamanan, maka standar I/O descriptor dan descriptor yang diwarisi dari proses induk harus ditutup. Ada 3 jenis standar I/O descriptor : STDIN (standar input), STDOUT (standar output), STDERR (standar error).
Contoh:
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
d. Melakukan masking pada File Creation
Sebagian besar daemon bekerja dalam previlege super user. Daemon biasanya memproteksi setiap file yang dibuat, dengan alasan keamanan. Fungsi umask() akan mencegah file-file previleges yang tidak aman dalam setiap pembuatan file.
Contoh :









e. Running Directory
Directory kerja daemon haruslah sebuah directory yang selalu hidup. Bisa saja pada saat starting working directorynya pada saat itu berada pada user home. Karena daemon bekerja sampai sistem reboot, maka file sistem user directorynya takkan pernah bisa di unmount.
Contoh :






contoh pop-up dari isi sebuah file txt :
----------------------------------------------------------------------------------
MASALAH :


1         Aya 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 file.txt. Jika virus ini ada dalam komputer anda, maka akan muncul pop-up dari semua isi file.txt yang terpisah dengan tanda delimiter koma (,) satu persatu setiap 2 menit sekali. Sebagai teman baik Aya bantulah ia membuat program tersebut!

SOLUSI :
                              >> codingan dalam bahasa c pada texteditor os linux




                                 >>isi file.txt



                                 >>saat dijalankan pada terminal




Langkah - langkah :


1. Pertama tama siapkan variabel pointer ber tipe data FILE karna variabel ini akan digunakan untuk menunjuk sebuah file txt (FILE *fp). 


2. Selain itu kita juga membutuhkan 2 variabel array of char alias string untuk menampung isi file (char message[1500], content[1500])


3. Siapkan juga sebuah variabel pointer untuk menunjuk hasil fungsi strtok (char *pch).


4. Karna kita akan mempop up kata terus menerus tanpa batasan tertentu dan akan berhenti hanya jika kita memanggil fungsi pkill pada program maka kita gunakan while(1). Angka satu didalam kurung while menyatakan bahwa pada semua kondisi adalah benar sehingga program akan selalu di eksekusi.


5. Untuk mendapatkan sebuah isi file maka langkah awal yang harus kita lakukan adalah dengan membuka file menggunakan fungsi fopen dan memasukkannya kedalam variabel pointer yang bertipe data FILE (fp=fopen("file.txt","r")). Dapat diartikan kita membuka file yang bernama file.txt dan code "r" berarti read only yaitu user hanya bisa membaca isi text dan tidak diizinkan untuk mengedit isi file.


6. Setelah file terbuka, kita akan mengambil isi file menggunakan fungsi fgets (fgets(content,1500,fp)). Dapat diartikan isi file yang ditunjuk oleh variabel fp sekarang menjadi isi variabel content dengan batasan 1500 char.


7. Agar aman, variabel content kita biarkan tetap memiliki isi original file lalu isi variabel content kita copy kedalam variabel array of char yang lain menggunakan strcpy (strcpy(message,content)). Variabel lain ini yang akan kita mainkan.


8. Strtok adalah fungsi untuk memotong sebuah string berdasarkan indikator tertentu yang ditentukan oleh user (pch=strtok(message,",")). Dapat diartikan kita akan memotong isi dari variabel message berdasarkan koma, lalu variabel pointer pch akan menunjuk kata sebelum koma.


9. Setelah mendapatkan sebuah kata maka langkah selanjutnya kita akan menampilkan kata tersebut menggunakan pop-up dengan fungsi zenity (char temp[ ] = "zenity --warning --text=' "). Jangan lupa mendeklarasikan sebuah variabel string untuk menampung perintah zenity.


10. Program belum dapat dijalankan karna pada fungsi zenity belum terbaca string yang akan di pop-up maka kita perlu menyatukan isi variabel temp dengan variabel pch menggunakan strcat (strcat(temp,pch)).


11. Program tetap menganggap tidak terbaca adanya string pada zenity karena tidak adanya tanda petik penutup. Seperti yang pernah kita pelajari sebelumnya bahwa untuk string yang ingin dibaca harus diapit oleh tanda petik. Maka kita perlu menggabungkan temp yang sudah digabung pch dengan tanda petik mengggunakan strcat (strcat(temp," ' "))


12. Langkah selanjutnya untuk menjalankan perintah di temp maka kita menggunakan fungsi system (system(temp)).


13. Setelah kata pertama di tampilkan menggunakan pop-up maka kita kembali mengosongkan nilai pch / pch tidak menunjuk alamat manapun.


14. Lalu karena program diminta pause selama 2 menit (120 detik) maka kita gunakan fungsi sleep (sleep(120)) .


15. Jika program menganggap sudah tidak ada isi file alias nilai pch adalah kosong maka file yang tadi dibuka ditutup kembali menggunakan fclose (fclose(fp)).


Semoga bermanfaat terima kasih!