Thursday, October 25, 2007

Siri Bercakap dengan fork()



**salinan boleh dimuat turun di sini [PDF]

Bahasa aturcara seperti C/C++ menyokong penciptaan satu proses baru iaitu fork(). Set
arahan fork() akan mencipta satu proses baru iaitu child dan proses asal tadi disebut
parent dengan syarat tertentu. Secara umumnya, syarat yang ditentukan ialah;
Sekiranya;
Fork ID Kondisi
<0 Fork gagal
0 Ini ialah child
>0 Ini ialah parent

Saya sertakan satu program lengkap (rujuk apendiks) yang anda boleh salin dan cuba
sendiri untuk memahami aliran fork() ini.
Untuk membolehkan kita “menyaring” PID, PPID dan pepohon proses (process tree)
program kita ini, kita boleh meletakkan arahan sleep(nilai saat) dan juga menggunakan
pstree untuk melihat aliran proses parent dan child tadi.
Andaikan nama program tersebut “myfork.cpp” dan selepas kompilasi menjadi “myfork”
sahaja.
g++ myfork.cpp -o myfork

Rajah 1 : Menggunakan pengkompil GNU C++ untuk mengompil aturcara C++

Sekarang kita larikan aturcara “myfork” ini:
$./myfork
Ini ialah child
mendapat instruksi dari 0
dengan PID 25145 dan PPID
25144
Ini ialah parent
mendapat instruksi dari 25145
dengan PID 25144 dan PPID
25049

Rajah 2: Melarikan program “myfork”. Di sini kita lihat dua proses iaitu “parent” dan “child”
dihasilkan



Jika kita rujuk pada penerangan sebelum ini dan kondisi pernyataan (statement
condition) di dalam kod yang disertakan pada apendiks, dapatlah kita fahami apabila nilai
instruksi dari fork()=0, child akan dihasilkan dan melarikan arahan, dan jika bukan 0 dan
bernilai positif, set arahan parent akan dihasilkan.

$pstree -p|grep myfork
| |-bash(25049)---myfork(25144)---myfork(25145)
Rajah 3: Menggunakan arahan pstree dengan flag -p bagi melihat PID, untuk melihat aliran poreproses
PPID dan PID proses parent (25144) dan proses child (25145)


Jika merujuk pada Rajah 2, nilai PPID, pre-proses ID child ialah 25144 iaitu sama
dengan PID pada proses parent, iaitu sama juga 25144. Manakala PPID bagi proses
parent pula ialah 25049 iaitu PID bagi “bash”, shell yang digunakan untuk melarikan
program “myfork” ini.

Output dari cygwin (kurang menarik):
lebahnet@syncronix ~/fork/ms
$ ./myfork.exe
Ini ialah parent
Ini ialah child
mendapat instruksi dari 3252
mendapat instruksi dari 0
dengan PID 3216 dan PPID
528
dengan PID 3252 dan PPID
3216


*untuk kod rujukan sila rujuk juga pada pautan di laman ini (juga tulisan saya),kerana ada masalah format HTML [SINI]

*gambar tux dengan garpu daripada laman http://yolinux.com

Tuesday, October 23, 2007

Everybody Loves "Ravmon.exe"

root@syncronix:/media/disk# clamscan
/media/disk/taiping.cpp: OK
/media/disk/RavMonE.exe: Worm.RJump-2 FOUND
/media/disk/ch9-doubleAreaSelfInput.cpp: OK
/media/disk/ch9-height_address.cpp: OK
/media/disk/sectionCquiz1.cpp: OK
/media/disk/string.pdf: OK
/media/disk/bm-and-kmp-cpu.png: OK
/media/disk/ch9-doubleArea.cpp: OK
/media/disk/bm-kmp.gnu: OK
/media/disk/ch9-doubleArea.exe: OK
/media/disk/ch9-doubleAreaSelfInput.exe: OK
/media/disk/msvcr71.dll: OK
/media/disk/classes-lab-exercises.doc: OK
/media/disk/RavMonLog: OK
/media/disk/lab-exec-b4-finale.doc: OK
/media/disk/matrix2.c: OK
/media/disk/matrix2.cpp: OK
/media/disk/matrix-lab-exec.cpp: OK
/media/disk/lab xcersise(1c).cpp: OK

----------- SCAN SUMMARY -----------
Known viruses: 160515
Engine version: 0.91.2
Scanned directories: 1
Scanned files: 19
Infected files: 1
Data scanned: 4.66 MB
Time: 7.369 sec (0 m 7 s)

root@syncronix:/media/disk# clamscan --remove
/media/disk/taiping.cpp: OK
/media/disk/RavMonE.exe: Worm.RJump-2 FOUND
/media/disk/RavMonE.exe: Removed
/media/disk/ch9-doubleAreaSelfInput.cpp: OK
/media/disk/ch9-height_address.cpp: OK
/media/disk/sectionCquiz1.cpp: OK
/media/disk/string.pdf: OK
/media/disk/bm-and-kmp-cpu.png: OK
/media/disk/ch9-doubleArea.cpp: OK
/media/disk/bm-kmp.gnu: OK
/media/disk/ch9-doubleArea.exe: OK
/media/disk/ch9-doubleAreaSelfInput.exe: OK
/media/disk/msvcr71.dll: OK
/media/disk/classes-lab-exercises.doc: OK
/media/disk/RavMonLog: OK
/media/disk/lab-exec-b4-finale.doc: OK
/media/disk/matrix2.c: OK
/media/disk/matrix2.cpp: OK
/media/disk/matrix-lab-exec.cpp: OK
/media/disk/lab xcersise(1c).cpp: OK

----------- SCAN SUMMARY -----------
Known viruses: 160515
Engine version: 0.91.2
Scanned directories: 1
Scanned files: 19
Infected files: 1
Data scanned: 4.66 MB
Time: 6.320 sec (0 m 6 s)

DiE! die! die!

Sunday, October 07, 2007

Udang was not a choice.






So I believe I am not the seafood type of person. Since I tried to eat those prawns and I only managed to eat two (or more?). I guess I only have much appetite on kepah, kupang and kerang alike.

Of course the most obvious all those meats and sliced chickens were in the first place. It just doesn't matter how long the time elapsed but it seems the human's stomach contains the extra dimension which allows you to eat a lot for such a long time.

Wednesday, October 03, 2007

Tuxpaint, Massachusetts and ms_MY



I was pointed to Google Code search by papit who did several developments hosted on Google Code's website. It turns out I also found my name within the search results. One of the project hosted by MIT. I wonder how it feel if I myself graduated from MIT. LoL. (evil laugh).
The tuxpaint translation file that I mentioned is being hosted here.
I believe when the time come, I'll also contribute in the software development as well.