FD ISSET read 後程式被阻塞 原創

2021-09-02 07:13:21 字數 421 閱讀 1604

author:張繼飛

fd_isset 是select()機制的乙個成員而已,網上很多解釋都是說fd_isset用來檢測sockfd是否有動作,對應讀,寫,異常等,當select()只監聽乙個sockfd時,表面上看是這樣,實際上 非也非也。

fd_isset,見名思義,其實就是判斷某個sockfd是否在這個fd set集合裡。所以,當程式select()監聽了多個sockfd後,若select()返回 >0 的話接下來所有的fd_isset 都會執行一遍。這樣就容易引入問題了,當某個檔案描述符fd開啟方式是阻塞狀態,但此時該fd並沒有發生動作,執行read後便會進入阻塞。這就違背了我們設計程式的初衷,所以當使用select()監聽多個檔案描述符fd時,最好在開啟裝置時 將其設定為非阻塞狀態 o_nonblock。

select處在超時過程中,若程式被kill,則返回值<0。

Linux主機被 後的工作

1.撥掉網線 這是最安全的斷開鏈結的方法,除了保護自己外,也可能保護同網段的其他主機.2.分析登入檔案資訊,搜尋可能 的途徑 被 後,決不是重新安裝就可以了,還要分析主機被 的原因和途徑,如果找出了問題點,就可能使您的主機以後更安全,同時也提高了自己的linux水平.如果不知道如何找出 途徑,下次還...

被開發同學」忽悠」後的反思

不知道各位同學在專案中有沒有遇到被開發同學 忽悠 的事情,現在我拿出來糗下,給大家提供乙個借鑑。專案測試進行到後期,pd開始隨機的檢測我們已經測試過的功能點,其中有乙個問題被 pd檢查了出來,作為該部分功能測試人員我覺很居喪,而且懊惱後悔。邏輯上的錯誤一般比較難以檢測出來,或者說由於資料量比較大的話...

Linux主機被入侵後的工作

1.撥掉網線 這是最安全的斷開鏈結的方法,除了保護自己外,也可能保護同網段的其他主機.2.分析登入檔案資訊,搜尋可能入侵的途徑 被入侵後,決不是重新安裝就可以了,還要分析主機被入侵的原因和途徑,如果找出了問題點,就可能使您的主機以後更安全,同時也提高了自己的linux水平.如果不知道如何找出入侵途徑...