阻塞和非阻塞是檔案的屬性還是read函式的屬性?
答:檔案的屬性
預設情況下,檔案的屬性是阻塞還是非阻塞的?
預設不阻塞:普通檔案
預設阻塞:終端裝置/de/tty,管道,套接字
errno與eagain
errno==eagain表示緩衝區無資料可讀(即:此時並沒有read讀到資料)
阻塞讀終端
int
main()
write
(stdout_fileno,buf,n)
;//向終端輸出
return0;
}
程式執行解釋:
預設bash是前台程式
./block-啟動了乙個程式,bash變成了後台程式 .
/block等待使用者輸入10個字元
實際輸入的個數》
10,剩下的還在緩衝區
read解除阻塞讀緩衝區的前10個資料,write寫到stdout,程式結束
bash從後台程式程式設計前台程式,又檢測到緩衝區的字串,將字串轉換成shell命令去解析
非阻塞讀終端
int
main()
char buf[
1024];
int n;
tryagain:
n=read
(fd,buf,
sizeof
(buf));
if(n<0)
perror
("read fail");
exit(1
);}write
(stdout_fileno,buf,n)
;return0;
}
Linux 阻塞 非阻塞讀終端
阻塞讀終端 block指當串列埠輸入緩衝區沒有資料的時候,read函式將會阻塞在這裡,移植到串列埠輸入緩衝區中有資料可讀取,read讀到了需要的位元組數之後,返回值為讀到的位元組數 include include int main void write stdout fileno,buf,n ret...
阻塞 非阻塞
阻塞和非阻塞指 的是在接收和傳送時是否等待動作完成才返回 舉例 阻塞 block 是指,你撥通某人 的 但是此人不在,於是你拿著 等他回來,其間不能再用 非阻塞 nonblock 是指,你撥通某人 的 但是此人不在,於是你結束通話 待會兒再打。至於到時候他回來沒有,只有打了 才知道。即所謂的 輪詢 ...
阻塞非阻塞
阻塞和非阻塞 阻塞 可用在assign語句和always語句中,表示只要源訊號發生變化,目標訊號就立刻完成賦值操作,在always塊中,結果與語句順序有關,在always塊中是順序關係 非阻塞 只能用在always語句中,表示該語句結束時完成賦值操作,結果與語句順序無關,並行關係 可以這樣理解 阻塞...