Fork() Di Dalam Program

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Fork() Di Dalam Program as PDF for free.

More details

  • Words: 477
  • Pages: 5
Menulis program fork() 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; PID <0 0 >0

Kondisi Fork gagal Child dicipta 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++

© 2007 Muhammad Najmi Ahmad Zabidi, dilesenkan di bawah Creative Common License

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 © 2007 Muhammad Najmi Ahmad Zabidi, dilesenkan di bawah Creative Common License

parent pula ialah 25049 iaitu PID bagi “bash”, shell yang digunakan untuk melarikan program “myfork” ini.

© 2007 Muhammad Najmi Ahmad Zabidi, dilesenkan di bawah Creative Common License

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

© 2007 Muhammad Najmi Ahmad Zabidi, dilesenkan di bawah Creative Common License

Apendiks #include #include<sys/types.h> void printParent(int ppid,int pid,int myfork); void printChild(int ppid,int pid,int myfork); using namespace std; int main() { pid_t pid; pid_t ppid; int myfork=fork(); pid=getpid(); ppid=getppid(); if (myfork!=0) { printParent(ppid,pid,myfork); } else if(myfork==0) { printChild(ppid,pid,myfork); } else { cout<<"Penciptaan proses fork gagal!"<<endl; } sleep(10); return 0; } void printParent(int ppid,int pid,int myfork) { cout<<"\nIni ialah parent\n" <<"mendapat instruksi dari "<<myfork<<endl; cout<<"dengan PID "<
© 2007 Muhammad Najmi Ahmad Zabidi, dilesenkan di bawah Creative Common License

Related Documents

Fork
May 2020 14
Rear Fork
May 2020 32
Front Fork
May 2020 23
Arahan Di Dalam Dos
May 2020 8