天天看點

read函數傳回立即傳回0

              ❤️強烈推薦人工智能學習網站❤️

                     最近在測試一個網絡程式的時候,每次調用read函數傳回立即傳回0,read是阻塞函數,沒有讀到資料竟然立即傳回0,有些奇怪。想了一下,和tcp的四次揮手有關,看代碼。

服務端:

用戶端:

makefile:

先啟動服務端,再啟動用戶端,然後再關掉用戶端,看列印。

服務端的read函數了解傳回,且傳回值為0。其原因是,用戶端關掉程序後發送FIN到服務端,然後系統給read函數發信号,告知read函數無資料,于是read函數馬上傳回。随後服務端每次調用read函數時都會收到系統發的這個信号,是以立即傳回0。

下一篇: 命名空間

繼續閱讀