天天看點

序列槽程式設計的VTIME與VMIN的配置

在序列槽程式設計模式下,open未設定O_NONBLOCK或O_NDELAY的情況下。

c_cc[VTIME]和c_cc[VMIN]映像read函數的傳回。

VTIME定義等待的時間,機關是百毫秒(通常是一個8位的unsigned char變量,取值不能大于cc_t)。

VMIN定義了要求等待的最小位元組數,這個位元組數可能是0。

VTIME=0,VMIN!=0。函數read()隻有在讀取了VMIN個位元組的資料或者收到一個信号的時候才傳回。

VMIN=0,VTIME!=0,read()函數傳回前也要等待幾百毫秒的時間量。這時,read()函數不需要像其通常情況那樣要遇到一個檔案結束标志才傳回0。

VTIME!=0,VMIN!=0,VTIME定義的是當接收到第一個位元組的資料後開始計算等待的時間量。如果當調用read函數時可以得到資料,計時器 馬上開始計時。如果當調用read函數時還沒有任何資料可讀,則等接收到第一個位元組的資料後,計時器開始計時。函數read可能會在讀取到VMIN個位元組 的資料後傳回,也可能在計時完畢後傳回,這主要取決于哪個條件首先實作。不過函數至少會讀取到一個位元組的資料,因為計時器是在讀取到第一個資料時開始計時 的。

VTIME=VMIN=0,即使讀取不到任何資料,函數read也會立即傳回。同時,傳回值0表示read函數不需要等待檔案結束标志就傳回了。