非规范模式

时间:2014-02-27 14:41:24

标签: c++ c linux termios

在linux终端中以非规范模式使用退格的简单方法是什么?

这是代码的一部分,当我设置标志时:

struct termios old_tio, new_tio;
/* get the terminal settings for stdin */
tcgetattr(STDIN_FILENO, &old_tio);
/* we want to keep the old setting to restore them a the end */
new_tio = old_tio;
/* disable canonical mode (buffered i/o) and local echo */
new_tio.c_lflag &=(~ICANON );/*& ~ECHOE  );*/
/* set the new settings immediately */
tcsetattr(STDIN_FILENO,TCSANOW,&new_tio);
for(;1;) {    

    c = getchar(); 
    switch(c) {...}
 }

当我按退格键时,我得到了一个

  

^?

。 但我需要删除最后一个符号..

谢谢。

2 个答案:

答案 0 :(得分:1)

我不认为这是可能的。根据{{​​1}}手册页(强调我的):

  

在非规范模式下,输入立即可用(无需用户        必须键入行分隔符字符,并禁用行编辑

此外,如果您的程序立即收到您键入的每个字符,它又如何被“带走”?

答案 1 :(得分:0)

在您的linux终端中执行此操作并像往常一样进行编码,它不会显示^?当你使用退格键时。

您也可以在.profile中将其添加为永久。

 stty erase ^?