Linux控制台程序,termios.h非规范模式小程序练习代码

源自《Linux程序设计第四版

读过了书籍不是真的学会,自己码出来才能看到自己掌握了多少。

用了2天时间才将这段小程序码出来,对于基础不是很好的我来说,还是非常开心。

#include <stdio.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
int main(){
    int c_in; //保存输入的选项
    //声明一个字符串数组,用来保存菜单选项
    char *option[]={
    "a.add a element",
    "d.delete a element",
    "q.quit",
    NULL
    };
    struct termios settings_init,settings_new;
    //判断是不是输出到文件中了,禁止重导向
    if(!isatty(fileno(stdout))){
        fprintf(stderr,"It's not a tty!");
        return 1;
    }
    tcgetattr(fileno(stdin),&settings_init);//取得终端配置信息
    settings_new = settings_init;
    settings_new.c_lflag &= ~ECHO;//关闭回显
    settings_new.c_lflag &= ~ICANON;//非规范模式
    settings_new.c_cc[VMIN] = 1; 
    settings_new.c_cc[VTIME]= 0;
    settings_new.c_lflag &= ~ISIG;
    tcsetattr(fileno(stdin),TCSANOW,&settings_new);//将新的配置信息保存
    while(1){
        char closen = 0;
        //在控制台打印出菜单
        char **ptr = option;
        while(*ptr){
            printf("%s\n",*ptr);
            ptr++;
        }
        //从键盘获取一个字符输入
        do{
            c_in = getc(stdin);
        }while(c_in == '\n');
        if(c_in == 'q'){
            tcsetattr(fileno(stdin),TCSANOW,&settings_init);//将配置信息复原
            return 0;
        }
        ptr = option;
        while(*ptr){
            if(**ptr == c_in ){
                closen = 1;
                printf("您的选择是:%c\n",c_in);
                break;
            }
            ptr++;
        }
        if(!closen){
            printf("您输入的不正确!\n");
        }
    }

}

展示一下效果:

键入的是a、b、d、q。

键入的时候不需要按回车,因为是非规范模式,自动就获取了。而且键入的字符不会回显哦!!

### 回答1: termios.h是一个C语言库文件,用于操作终端I/O。在Linux和Unix系统中,可以使用这个库文件来实现对终端设置的控制,包括终端的属性设置、字符输入输出的控制、终端模式设置等。 要下载termios.h,首先需要确认系统是否已经安装了所需的头文件。一般而言,大多数Linux和Unix系统中都已经默认安装了这个头文件,因此无需额外下载。 如果确定系统中并没有安装termios.h,可以通过以下步骤进行下载和安装: 1. 打开终端,进入合适的工作目录。 2. 执行以下命令以下载termios.h的源代码文件: ``` wget https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/termios.h ``` 3. 下载完成后,将下载的文件复制到系统的合适目录,一般为/usr/include目录下。执行以下命令复制文件: ``` sudo cp termios.h /usr/include/ ``` 4. 终端I/O操作时,可以在源代码中通过以下方式引用termios.h: ``` #include <termios.h> ``` 总之,termios.h是用于操作终端I/O的C语言库文件,可以通过上述步骤下载和安装。请注意,这些步骤可能因不同的Linux或Unix系统而有所不同,请根据具体情况进行操作。 ### 回答2: termios.h是一个C语言标准库的头文件,用于在Linux系统中进行终端的输入输出控制。可以通过使用 termios.h 头文件中提供的函数和结构体来控制终端的输入输出设置,如修改终端的属性、设置字符的显示方式、实现规范模式的输入输出等。 要使用 termios.h,首先需要包含它的头文件(#include <termios.h>),然后在程序中使用相关的函数和结构体来进行控制。 termios.h 中定义了一些重要的结构体,如termios结构体,用于保存终端的配置信息。在使用函数进行设置时,我们可以先获取当前终端的配置信息,然后根据需要进行修改,最后将修改后的配置信息重新应用到终端上。 termios.h 中也定义了许多常用的函数,如tcgetattr和tcsetattr函数,用于获取和设置终端的配置信息。其他还有cfsetispeed和cfsetospeed函数,用于设置终端的输入输出速度。 总的来说,termios.h 提供了很多终端控制的功能,可以帮助我们进行终端的输入输出配置和管理。 ### 回答3: termios.h是一个用于控制终端I/O的头文件。它包含了一些用于配置终端属性的函数和常量,可以在编程中用来实现对终端的输入输出控制。 要下载termios.h头文件,首先需要安装适合的C编译器。然后,在编程环境中创建一个新的C源代码文件,将以下代码复制粘贴到文件中: ```c #include <termios.h> ``` 保存文件并使用编译器编译源代码文件。如果编译通过,那么说明termios.h头文件已经成功下载并且可以在编程中使用了。 值得注意的是,termios.h是Unix-like系统(如Linux)中标准的头文件,因此在大多数情况下,它已经默认包含在了操作系统中,并不需要额外下载。如果在某些情况下找不到termios.h头文件,可能是由于编译器或操作系统缺少该头文件。此时,可以尝试更新编译器或操作系统,并确保相关开发工具的安装是完整和正确的。 总之,对于大多数情况,编译环境中已经包含了termios.h头文件,因此无需额外下载。只需要正确地包含头文件,并进行编译即可使用termios.h中定义的函数和常量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值