Ana proses için dönüş değeri, yeni oluşan çocuk processin ID’si çocuk process için dönüş değeri 0’dır.
fork_degeri>0 : Ana process döndürülür.
fork_degeri == 0 : Çocuk process için döndürülür.
fork_degeri == -1 : Çağrı başarısız oldu ve çocuk oluşamadı. Ana process içine döndürülür.
Örnek 1:
#include<iostream> #include<unistd.h>//Bu kütüphane ise getpid() ve fork() fonksiyonlarını buraya dahil etmek yani bu fonkları kullanmak icin using namespace std; int main() { pid_t pid; pid=fork();//Burada Ana prosesin bir kopyası oluşturulur.Oluşturulan bu proses çocuk proses denir.Ana prosesdeki pid değeri çocuğunun pid değeridir. //Çocuk prosesdeki pid değeri ise çocuğun çocuğu olamadığı için 0 dır. if(pid==0) { cout<<"Ben cocuk Proses PID="<<getpid(); //getpid() fonksiyonu çalıştıran prosesin değerini döndürür. } else { cout<<"Ben Anne proses PID="<<getpid(); } return 0;}
Çıktı :
Ben Anne proses PID=3115Ben cocuk Proses PID=3117
Örnek 2:
#include<iostream> #include<unistd.h> #include<sys/types.h> using namespace std; int main() { pid_t pid; cout<<"Proc id:"<<getpid()<<endl; pid=fork(); if(pid==0) // cocuk { cout<<"BEN COCUK, PROC ID:"<<getpid()<<endl; cout<<"COCUK: BEN UYUDUM"<<endl; sleep(20); // 20 sn bekle devam et. cout<<"COCUK: BEN UYANDIM"<<endl; } else{ if(pid>-1) cout<<"COCUK PID:"<<pid<<endl; else cout<<"COCUK OLUSMADI"<<endl; cout<<"ANNE PID:"<<getpid()<<endl; cout<<"ANNE: BEN UYUDUM"<<endl; sleep(10); //10 sn bekle devam et. cout<<"ANNE: BEN UYANDIM"<<endl; } return 0; }
Çıktı :
Proc id:15216
COCUK PID:15218
ANNE PID:15216
ANNE: BEN UYUDUM
BEN COCUK, PROC ID:15218
COCUK: BEN UYUDUM
ANNE: BEN UYANDIM
COCUK: BEN UYANDIM
Bu yazı yorumlara kapalı.