Unix-Linx 编程实践教程 第六章 小结

  • 终端模式有三种,规范模式、非规范模式、raw模式。
    1. 规范模式:又名cooked模式,是最常见的模式。拥有缓冲区特性(仅在接收到回车键时才将输入发送到程序),使得驱动程序可以实现基本的编辑功能。可通过命令stty或tcsetattr()修改。
    2. 非规范模式:没有缓冲特性和可编辑特性,但仍具有特定的字符处理,比如处理Ctrl-C。
    3. raw模式:当所有的处理设置都被关闭时,驱动程序处于raw模式。
  • struct termios.c_lflag部分属性位
    ICANON---标准模式属性位
    ISIG---当输入INTR、QUIT、SUSP或DSUSP时,产生相应的信号
    ECHO---回显属性位
  • struct termios.c_cc[VMIN] = 1; //设置每次只读一个字符
    struct termios.c_cc[VTIME]=20; //设置驱动程序的超时为2s
  • 终端驱动程序默认行缓冲输出,所以cout<<endl同fflush(stdout)作用一样,都是让缓冲内容迅速输出。

  • signal()用于安装信号处理函数

  • 针对SIGINT(Ctrl-C)安装处理函数,如果SIGINT发送太多次的话,仅仅有两个SIGINT会被真正发送到信号队列中

猜你喜欢

转载自my.oschina.net/u/3281747/blog/2876862