阻塞 非阻塞 讀終端

2021-08-29 00:02:33 字數 921 閱讀 5655

阻塞和非阻塞是檔案的屬性還是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語句中,表示該語句結束時完成賦值操作,結果與語句順序無關,並行關係 可以這樣理解 阻塞...