socket中慢速系統呼叫函式

2021-10-09 10:17:31 字數 799 閱讀 5691

socket程式設計中用到的慢速系統呼叫函式有:

accept

while(1)

}break;

}

read

返回值:

>0 ,read實際讀到的位元組數

=0,資料讀完(讀到檔案末尾、管道(寫端關閉,read返回0,好似讀到檔案末尾)、socket末尾(其中讀到socket末尾表示對端關閉))

問題:存不存在對端沒關閉,但是不向socket中寫資料的情況呢?

存在,此時read函式並不會返回0,而是會阻塞住。

-1,異常,通過errno排除正常的錯誤;

表示,過段時間應重新讀一下。

write

返回值同read.

因為是慢速,所以,在呼叫的過程中,存在被訊號中斷的可能性,所以,需要當函式返回-1出錯的時,需要通過errrono繼續進行判斷,如果是。。。等錯誤,可以忽略,應該繼續進行。

select:

<0  :出錯

=0:超時

>0 :有事件發生

struct timeval wwait;

wwait.tv_sec = 3

wwait.tv_usec = 0;

while(1)

printf("select error, info: %s!", strerror(errno));

return -1;

}else if(status == 0)

break;

}}

系統呼叫 函式呼叫

linux下對檔案操作有兩種方式 提供了庫函式,如open close read write ioctl 等,需包含標頭檔案unistd.h。以write 函式為例 其函式原型為size t write int fd,const void buf,size t nbytes 其操作物件為檔案控制代碼...

Socket 與系統呼叫深度分析

本次實驗主要從以下幾個方面對socket和系統呼叫之間的關係 socket api 和 系統呼叫關係 系統呼叫機制 socket相關系統呼叫核心函式和跟蹤驗證 系統呼叫一般發生在中斷的時候。當中斷發生時,系統就會進入核心態指向相關的系統呼叫。相信考過408的同學對下圖應該是很熟悉的。這個圖大概的描述...

Socket與系統呼叫深度分析

一 系統呼叫 由於需要限制不同的程式之間的訪問能力,防止他們獲取別的程式的記憶體資料,或者獲取外圍裝置的資料,併發送到網路,cpu劃分出兩個許可權等級 使用者態和核心態。核心態 cpu可以訪問記憶體的所有資料,包括外圍裝置,例如硬碟,網絡卡,cpu也可以將自己從乙個程式切換到另乙個程式。使用者態 只...