FAQ |
Calendar |
![]() |
|
Programming Share, tanya jawab, saling bantu antar programmer dengan berbagai macam bahasa pemrograman. |
![]() |
|
Thread Tools |
#1
|
||||
|
||||
![]()
Mau sharing soal ngebuat http webserver yg pake POSIX compatible functions, SignalHandler, Multiple Process. Di buat under unix system. Webserver yg gw buat ini, klo user masukin alamatnya di url dengan kata laen GET maka yg dikirim ke client adalah standard page. di dalam websitenya, cuman 3 hal yg saya implementasi: 1. panggil hostname 2. liat interrupts yg di unix system biasanya di /proc/interrupts 3. jalankan ps unix command index.html yg saya pakai Code: Parallel Webserver Available functions and commands On this server you can try some commands:
fungsi2x penting dan penjelasan int fork(); fork() dipakai untuk membuat child process, jadi dari initial process bakalan jadi 2, father ama child. Child process itu full copi dari father process. fork() return 2x sekali ke father sekali ke child, child dapet nilai 0, father dapet pidnya child (pid = process id). signal, apakah itu signal, signal itu merupakan pesan dari suatu process ke process lain, atau error dari process itu sendiri. bentuknya bisa interrupt, exception, errors. Gunanya untuk mengasih tau suatu process tentang hal yg terjadi di sekitar. contohnya: ctrl+c itu, signalnya namanya SIGINT. dengan adanya signal ini maka process tau kalau user pengen nutup dia. dalam program ini signal yg saya pakai adalah SIGCHLD, yg bakalan di luncurkan ama child process ketika dia terminasi diri sendiri. father process bisa menunggu child dengan memakai system calls waitpid(), kalau dipasang blocking fathernya tidak akan meneruskan processnya, dia bakalan menunggu sampai child selesai. tapi dalam hal ini father process yg pertama tidak saya block, agar bisa menerima client yg laen, dengan kata laen servernya paralel. PS command ini yg menarik, karena untuk melakukannya saya membuat child process dari child process. jadi kayak gini Father // accepting any connection ###|->Child1 // handle 1 connection ######|->Child1.1 // creating image with exec() to launch ps command Child1.1 ini dipakai untuk membuat image process dengan system calls exec untuk menjalankan ps unix command. hal penting dalam sini yakni, kita harus membelokkan STDOUT, seperti yg kita tau ketika sebuah process membaca/menulis sebuah data dalam bentuk apapun, bakalan dipasangin file descriptor, standardnya ada 3: STDOUT, STDIN, STDERR. for eg Typ: FILE Standard Handler: Input: stdin Output: stdout Error: stderr ini bisa diganti2x, printf() bisa di buat masukin ke sebuah file. dengan cara menganti standard outputnya dengan file descriptor (klo kita buka file pakai open() maka yg di return itu adalah file descriptor, jadi kita bisa ganti stdout dengan filedescriptor, dengan mengunakan system calls dup2()) Terkait:
|
![]() |
|
|