阻塞程式函式 wait()和waitpid()

weixin_30639719發表於2020-04-05

1.  wait()和waitpid()函式說明

wait()

程式一旦呼叫了wait(), 就立即阻塞自己,由wait自動分析是否有當前程式的某個子程式已經退出,如果讓它找到了一個已經變成殭屍的子程式,wait就會收集這個子程式的資訊,並把它徹底銷燬後返回;如果沒有找到這樣一個子程式,wait就會一直阻塞在這裡,直到一個子程式結束或者該程式接到了一個指定的訊號為止。


waitpid()

waitpid()的作用和wait()一樣,但它並不一定要等待第一個終止的子程式,它還有若干選項,如可提供一個非阻塞版本的wait()功能等。實際上wait()函式只是waitpid()函式的一個特例,在Linux內部實現wait()函式時直接呼叫的就是waitpid()函式。
wait()函式的實現:

static inline  pid_t  wait(int *wait_stat)  

{  

  return waitpid(-1,wait_stat,0);  

}  

 

轉載於:https://www.cnblogs.com/gangzilife/p/9105723.html

相關文章