終端IO
每個終端都有輸入輸出隊(duì)列
隊(duì)列都有長度,如果輸入超過輸入隊(duì)列MAX_INPUT長度,大多數(shù)unix系統(tǒng)會回顯響鈴來處理。
但是對于輸出隊(duì)列來講,雖然輸出隊(duì)列也有長度,但是一旦寫不進(jìn)去的時候,寫進(jìn)程會suspend掉
直至有空閑空間
終端行規(guī)程 terminal line discipline
會幫忙做規(guī)范處理
終端設(shè)備屬性 ->termios
struct termios {
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_line;
cc_t c_cc[NCCS];
};
local flag影響驅(qū)動程序和用戶之間的接口
Android上tcflag_t->
typedef unsigned int tcflag_t;
cc_t
typedef unsigned char cc_t;
control flag中很多選項(xiàng)標(biāo)志都是用幾位標(biāo)識然后用或來做選擇
isatty的實(shí)現(xiàn),借助tcgetattr的出錯機(jī)制,成功返回0;否則返回-1,帶上ENOTTY
int
isatty (int fd)
{
struct termios term;
return tcgetattr (fd, &term) == 0;
}
Anyway,終端IO很復(fù)雜...