終端IO
每個終端都有輸入輸出隊列
隊列都有長度,如果輸入超過輸入隊列MAX_INPUT長度,大多數unix系統會回顯響鈴來處理。
但是對于輸出隊列來講,雖然輸出隊列也有長度,但是一旦寫不進去的時候,寫進程會suspend掉
直至有空閑空間
終端行規程 terminal line discipline
會幫忙做規范處理
終端設備屬性 ->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影響驅動程序和用戶之間的接口
Android上tcflag_t->
typedef unsigned int tcflag_t;
cc_t
typedef unsigned char cc_t;
control flag中很多選項標志都是用幾位標識然后用或來做選擇
isatty的實現,借助tcgetattr的出錯機制,成功返回0;否則返回-1,帶上ENOTTY
int
isatty (int fd)
{
struct termios term;
return tcgetattr (fd, &term) == 0;
}
Anyway,終端IO很復雜...