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ı.