新聞中心
進(jìn)程間通信中wait函數(shù)有什么作用?
調(diào)用wait或waitpid有三種不同的情況發(fā)生:

創(chuàng)新互聯(lián)專注于永春企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開發(fā)。永春網(wǎng)站建設(shè)公司,為永春等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
1、如果其所有子進(jìn)程都還在運(yùn)行,則阻塞
2、如果一個(gè)子進(jìn)程終止,正等待父進(jìn)程獲取其終止?fàn)顟B(tài),則取得該子進(jìn)程的終止?fàn)顟B(tài)立即返回
3、如果它沒有任何子進(jìn)程,則立即出錯(cuò)返回 如果進(jìn)程由于接收到SIGCHLD信號(hào)而調(diào)用wait,則可期望wait會(huì)立即返回,但是如果在任意時(shí)刻調(diào)用wait,則進(jìn)程可能會(huì)阻塞。
在一個(gè)子進(jìn)程終止前,wait使其調(diào)用者阻塞,而waitpid有一個(gè)選項(xiàng),可使調(diào)用者不阻塞。waitpid并不等待在其調(diào)用之后的第一個(gè)終止子進(jìn)程,他有若干選項(xiàng),可以控制他所等待的進(jìn)程。waitpid函數(shù)提供wait函數(shù)沒有提供的三個(gè)功能: 1、waitpid可等待一個(gè)特定的進(jìn)程,而wait則返回任一終止子進(jìn)程的狀態(tài) 2、waitpid提供了一個(gè)wait的非阻塞版本 3、waitpid支持作業(yè)控制Linux ps命令詳解?
ps是一個(gè) Linux 命令,顯示有關(guān)系統(tǒng)上當(dāng)前正在運(yùn)行的進(jìn)程的信息。
一些常見的選項(xiàng)ps是:
-aux:以面向用戶的進(jìn)程狀態(tài)格式顯示所有用戶的所有進(jìn)程的信息。
-ef或-e:以比默認(rèn)格式提供更多信息的格式顯示有關(guān)所有進(jìn)程的信息。
-u USER:僅顯示有關(guān)以指定用戶身份運(yùn)行的進(jìn)程的信息。
請注意,ps命令的選項(xiàng)和輸出可能因類 Unix 操作系統(tǒng)而異。查閱手冊頁 ( man ps) 以獲取更多信息和用法示例始終是個(gè)好主意。
僵尸線程產(chǎn)生原因?
僵尸進(jìn)程的產(chǎn)生:
當(dāng)一個(gè)進(jìn)程創(chuàng)建了一個(gè)子進(jìn)程時(shí),他們的運(yùn)行時(shí)異步的。即父進(jìn)程無法預(yù)知子進(jìn)程會(huì)在什么時(shí)候結(jié)束,那么如果父進(jìn)程很繁忙來不及wait 子進(jìn)程時(shí),那么當(dāng)子進(jìn)程結(jié)束時(shí),會(huì)不會(huì)丟失子進(jìn)程的結(jié)束時(shí)的狀態(tài)信息呢?處于這種考慮unix提供了一種機(jī)制可以保證只要父進(jìn)程想知道子進(jìn)程結(jié)束時(shí)的信息,它就可以得到。
這種機(jī)制是:在每個(gè)進(jìn)程退出的時(shí)候,內(nèi)核釋放該進(jìn)程所有的資源,包括打開的文件,占用的內(nèi)存。但是仍然保留了一些信息(如進(jìn)程號(hào)pid 退出狀態(tài) 運(yùn)行時(shí)間等)。這些保留的信息直到進(jìn)程通過調(diào)用wait/waitpid時(shí)才會(huì)釋放。這樣就導(dǎo)致了一個(gè)問題,如果沒有調(diào)用wait/waitpid的話,那么保留的信息就不會(huì)釋放。比如進(jìn)程號(hào)就會(huì)被一直占用了。但系統(tǒng)所能使用的進(jìn)程號(hào)的有限的,如果產(chǎn)生大量的僵尸進(jìn)程,將導(dǎo)致系統(tǒng)沒有可用的進(jìn)程號(hào)而導(dǎo)致系統(tǒng)不能創(chuàng)建進(jìn)程。所以我們應(yīng)該避免僵尸進(jìn)程
這里有一個(gè)需要注意的地方。如果子進(jìn)程先結(jié)束而父進(jìn)程后結(jié)束,即子進(jìn)程結(jié)束后,父進(jìn)程還在繼續(xù)運(yùn)行但是并未調(diào)用wait/waitpid那子進(jìn)程就會(huì)成為僵尸進(jìn)程。
到此,以上就是小編對于linux waitpid函數(shù)的問題就介紹到這了,希望這3點(diǎn)解答對大家有用。
文章題目:進(jìn)程間通信中wait函數(shù)有什么作用?(Linux下waitpid函數(shù)怎么使用)
文章起源:http://m.fisionsoft.com.cn/article/cosdeji.html


咨詢
建站咨詢
