Bu komut aktif olan proses içine yazılan prosesin, herhangi bir alt prosesin işlemini bitirmesi için beklemesidir. Sonlanmadığı taktirde program da sonlanmaz. Prosesin işlem yapmama, bekleme durumudur. İpliklerde pthread_join() ifadesi bu görevi görüyordu
Waitpid(pid, int durum, int seçenek); şeklinde kullanılır. Tek bir parametreyi tutar. Bu parametre adres bilgisini tutar. Beklenen proses sonlandığında, sonlanan bu prosesin çıkış değerini tutar. 3 şekilde kullanılabilir.
1. parametre : Beklenecek olan proses ID’si yazılır. Herhangi bir çocuk proses beklenecekse ilk parametreye “-1” değeri girilir.
2. parametre : Bu parametre adres tutar. Beklenen proses sonlandığında int *durum olarak belirttiğimiz ikinci parametre ifadesi, sonlanan bu prosesin çıkış değerini tutar.
3. parametre : Özellikler parametresidir. “0” veya bazı özel değerler alır. Sıfır haricinde 3 değer alır.
WNOHANG : Hiçbir çocuk proses sonlanmıyorsa hemen geri dönmeyi belirtir.
WUNTRACED : Çocuk proses durdurulduğunda geri dönülecektir.
WCONTINUED : Durdurulan çocuk proses SIGCONT sinyali aldığında geri döner.
#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.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);
cout<<"COCUK: BEN UYANDIM"<<endl;
cout<<"COCUK: BEN SONLANDIM"<<endl;
}
else{
if(pid>-1)
cout<<"COCUK PID:"<<pid<<endl;
else
cout<<"COCUK OLUSMADI"<<endl;
cout<<"ANNE PID:"<<getpid()<<endl;
waitpid(pid,0,0);
cout<<"ANNE: BEN SONLANDIM"<<endl;
}
return 0;
}
Çıktı :
Proc id:20326
COCUK PID:20328
ANNE PID:20326
BEN COCUK, PROC ID:20328
COCUK: BEN UYUDUM
COCUK: BEN UYANDIM
COCUK: BEN SONLANDIM
ANNE: BEN SONLANDIM
Bu yazı yorumlara kapalı.