LINUX 使用tcgetattr函数与tcsetattr函数控制终端五

实例演练:
程序p6.2.c通过修改终端控制字符,将终端输入结束符由“Ctrl+D”,修改成了“Ctrl+G”。首先,程序调用tcgetattr函数获得标准输入的termios信息,将termios结构体中的c_cc[VEOF]控制字符的修改成0x07(即Ctrl+G);然后,使用tcsetattr函数将修改后的termios参数设置到终端中。具体代码如下所示:

//p6.2.c 修改终端控制字符示例 #include <stdio.h> #include <termios.h> #include <unistd.h> #include <errno.h>

int main(void){ //term用于存储获得的终端参数信息 struct termios term; int err;

//获得标准输入的终端参数,将获得的信息保存在term变量中 if(tcgetattr(STDIN_FILENO,&term)==-1){ perror("Cannot get standard input description"); return 1; }

//修改获得的终端信息的结束控制字符 term.c_cc[VEOF]=(cc_t)0x07;

//使用tcsetattr函数将修改后的终端参数设置到标准输入中 //err用于保存函数调用后的结果 err=tcsetattr(STDIN_FILENO,TCSAFLUSH,&term);

//如果err为-1或是出现EINTR错误(函数执行被信号中断), //给出相关出错信息 if(err==-1 && err==EINTR){ perror("Failed to change EOF character"); return 1; }

return 0; }

使用gcc编译p6.2.c程序,得到名为p6.2的可执行程序。在执行p6.2程序前,按“Ctrl+D”可以使终端结束。执行p6.2程序后,按“Ctrl+D”失去了作用,而输入“Ctrl+G”实现了原来“Ctrl+D”的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值