T9的空间

You will never walk alone!

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  69 随笔 :: 0 文章 :: 28 评论 :: 0 Trackbacks

终端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很复杂...

posted on 2013-06-07 14:40 Torres 阅读(220) 评论(0)  编辑 收藏 引用 所属分类: APUE

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理