wait
和waitpid
是Unix/Linux操作系統中用于等待子進程結束的系統調用函數。它們有以下區別:
參數不同:wait
函數不需要指定子進程的ID,而waitpid
函數需要指定子進程的ID。
阻塞行為不同:wait
函數將調用進程阻塞,直到任意一個子進程終止。而waitpid
函數可以指定不同的選項,可以選擇立即返回,不阻塞調用進程。
處理多個子進程時不同:wait
函數只能等待任意一個子進程終止,而waitpid
函數可以等待指定的子進程終止,或者等待任意一個子進程終止。
錯誤處理不同:wait
函數不能指定錯誤處理方式,而waitpid
函數可以通過設置WNOHANG
選項來指定當沒有已終止的子進程時,不阻塞調用進程,立即返回0。
總結起來,wait
函數是比較簡單的等待子進程終止的方法,而waitpid
函數則更加靈活,可以根據需要選擇等待特定的子進程或者立即返回,不阻塞調用進程。