Skip to main content
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

Comments

Popular posts from this blog

Panduan Bas Ekspres Kuala Lumpur (TBS) - Skudai

Nota ringkas untuk saya. Bas dari KL (Terminal Bas Bersepadu Selatan, TBS) ke Johor Bahru (Larkin Terminal) secara umum bermula 8 pagi hingga ke pukul 12 malam. Ada banyak syarikat yang ke sana jadi boleh dikatakan tiket boleh dibeli secara on-spot tanpa belian awal.
Harga tiket adalah sekitar RM31-32 bergantung kepada syarikat. Sesetengah syarikat mengenakan caj tambahan 10 sen untuk insurans. 
TBS boleh dihubungkan dengan stesen Komuter, ERL, dan LRT. LRT akan tamat perkhidmatan pada pukul 1130 malam jadi rancang perjalanan supaya tak perlu ambil perkhidmatan teksi yang cekik darah.. contohnya dari TBS ke Taman Cempaka Ampang kalau naik LRT hanya RM1.60, naik "Teksi Bajet" (bajet la sangat) adalah RM33 
Bas dari KL-JB turun di Larkin. Sekiranya belajar/ada urusan di UTM Skudai, beritahu pemandu bas untuk turun di Taman Sri Putri/Sri Putri. Kemudian boleh ambil teksi di seberang jalan (naik jejantas), untuk ambil teksi sapu atau teksi berdaftar. Jangkaan harga teksi adalah…

Cara Renew Passport Pembantu Rumah di Kedutaan Indonesia 2015

Tulisan ni sah sehingga 17 Febuari 2015 semalam.


Ceritanya aku bermula dari seminggu sebelum 17 Feb 2015 tu lagi.. passport bibik aku expired pada Oktober 2015, jadi cadang nak buat sementara aku tengah cuti belajar ni.. ingat settle sehari macam ditulis pada kebanyakan blog, tapi disebabkan kedutaan NKRI ni tengah berubah kepada sistem biometrik (dia ambil cap 10 jari, semua tangan kanan dan kiri!).. Ginilah ceritanya:


Minggu satu
Hari Selasa : Datang pukul 7. Pukul 9 bukak gate. Pengawal kata.. nombor ambik Isnin atau Khamis sahaja

Hari Khamis: Datang pukul 7 pagi. Pukul 9 pagi bukak gate.. dalam pukul 10 pagi dapat nombor..
serah 3 borang kontrak dan dokumen
datang esok untuk buat passport

Hari Jumaat: Datang pukul 9 PAGI.. sebab nombor dah ada.. pukul 1230tghari staf embassy kata "DATANG BALIK LEPAS JUMAAT". so balik rumah solat jumaat.. pukul 3ptg datang balik. ambik gambar PUKUL LAPAN MALAM HAHAHAHA
Datang lagi ye.. Hari Selasa depan.. PUKUL DUA PETANG


Minggu dua
Hari Selasa: D…