Beginning Linux Programming 笔记(五)终端

来源:互联网 发布:手机怎样收藏淘宝店铺 编辑:程序博客网 时间:2024/05/17 06:19

     在第四章中,我们简单了解了Linux的编程环境,第五章会进一步了解这个我们无时不刻使用的编程环境——终端。在这个终端上面,我们使用着Linux的强大功能,软件安装,卸载,运行,调试。当写好的程序在这个终端上跑的时候,是否有这么一个疑问:我们能不能控制终端的行为,控制它输入输出时的各种行为与处理方式。

      答案是可以的,这就是我们下面要讲的Linux终端。

     说终端,首先要从终端命令说起,对于我们平常使用的命令行工具,究竟它们是如何实现那些字符读取控制流程的。第四章讲过可以使用使用main参数去读取输入字符串,用getopt()去提取选项与参数,下面就说说菜单控制的常用方法吧。

   首先是定义一个菜单:

然后定义一个函数来控制选择,这个函数可以过滤掉错误的选择,提示重新输入,返回值是输入的有效值(菜单中有定义的字母)。

int getchoice(char *greet, char *choices[]);

具体实现代码如下:

  

    对于终端的控制,主要是通过termios.h这个文件的去调用和处理的。有一个结构体 termios 存储终端的属性,通过修改这个属性,可以修改终端的行为。对于一个终端的控制,分为五个方面: 输入、输出、控制、本地(我也没搞清楚这个定义)、特殊控制字符,他们分别对应结构体里面的一项。

termios结构体如下:

对termios的操作有下面两个函数:
#include <termios>
 int tcgetattr(int fd, struct termios *termios_p);                        //读取属性
 int tcsetattr(int fd, int actions, const termios *termios_p);       //设置属性

下面举一个简单的例子,通过控制终端的属性来使输入密码时不让终端把字符打印出来:

      其实个人觉得终端控制时比较底层的,开发中应该是比较少用到终端控制的这些东西,现代的UI提供了比较简单抽象的操作。所以我也没有刨根问底,也只是简单地看了这一个章节。上面也只是很简单做了一个介绍,讲得不对的地方,希望各位多多指教。

原创粉丝点击