0

在 Unix 中,某些键的默认设置因平台而异。例如,在 Ubuntu 中擦除可能是erase = ^?. 但是,对于 AIX,它可能与 example 完全不同erase = ^H。如何检查 C 中的 stty 设置?

这是我试图写的

#include<stdio.h>
#include<stdlib.h>
#include<termios.h>
#include<unistd.h>

int main()
{
  struct termios term;

  if(tcgetattr(STDIN_FILENO, &term) < 0)
  {
     printf("Error to get terminal attr\n");
  }

  printf("The value for Erase is %s\n",term.c_cc[ERASE]);

  return 0;
}

使用 gcc 编译后。它说 ERASE 未声明。那么实际上我应该使用的正确选项或变量是什么?

4

1 回答 1

2

printf("The value for Erase is %s\n",term.c_cc[ERASE]);应该是printf("The value for Erase is %d\n",term.c_cc[VERASE]);,有关详细信息,请参阅termios(3)

擦除字符的符号索引是VERASE; c_cc[VERASE]is的类型cc_t,在我的系统中,cc_tis unsigned char,所以应该用%cor打印%d

于 2014-02-20T03:32:49.880 回答