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