阻塞讀終端:block指當串列埠輸入緩衝區沒有資料的時候,read函式將會阻塞在這裡,移植到串列埠輸入緩衝區中有資料可讀取,read讀到了需要的位元組數之後,返回值為讀到的位元組數
#include #include int main(void)
write(stdout_fileno, buf, n);
return 0;
}
非阻塞讀終端:no block指當串列埠輸入緩衝區沒有資料的時候,read函式立即返回,返回值為0
#include #include #include #include #include #define msg_try "try again\n"
int main(void)
tryagain:
n = read(fd, buf, 10);
if (n < 0)
perror("read /dev/tty");
exit(1);
} write(stdout_fileno, buf, n);
close(fd);
return 0;
}
阻塞 非阻塞 讀終端
阻塞和非阻塞是檔案的屬性還是read函式的屬性?答 檔案的屬性 預設情況下,檔案的屬性是阻塞還是非阻塞的?預設不阻塞 普通檔案 預設阻塞 終端裝置 de tty,管道,套接字 errno與eagain errno eagain表示緩衝區無資料可讀 即 此時並沒有read讀到資料 阻塞讀終端 int ...
Linux阻塞和非阻塞
阻塞 休眠 呼叫是沒有獲得資源則掛起程序,被掛起的程序進入休眠狀態,呼叫的函式只有在得到結果之後才返回,程序繼續。非阻塞 休眠 是不能進行裝置操作時不掛起,或返回,或反覆查詢,直到可以進行操作為止,被呼叫的函式不會阻塞當前程序,而會立刻返回。因為阻塞的程序會進入休眠狀態,因此,必須確保有乙個地方能夠...
Linux阻塞與非阻塞
1.阻塞 block 概念 指程序或執行緒在執行裝置操作或管道,或則網路時,不能獲取到資源就被掛起,直到滿足可操作的條件後在進行操作,被掛起的程序進入休眠狀態,從執行佇列移走,直到 等待的條件滿足才繼續執行。也就是執行到某些函式時必須等待某個事件發生函式才返回。2.非阻塞 non block 程序就...