2014-02-20 3 views
0

Unix에서 특정 키의 기본 설정은 각 플랫폼마다 다릅니다. 예를 들어 우분투에서 지우기는 erase = ^? 일 수 있습니다. 그러나 AIX의 경우 예 : erase = ^H과 완전히 다를 수 있습니다. C에서 stty 설정을 확인하려면 어떻게합니까?사용자가 c를 사용하여 stty의 지우기/백 스페이스 세트를 확인하는 방법

이 내가 GCC를 사용하여 컴파일 한 후

#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; 
} 

을 쓰기 위해 노력했다 것입니다. ERASE는 신고하지 않았다. 실제로 사용해야하는 올바른 옵션 또는 변수는 무엇입니까?

답변

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]의 유형은 cc_t이고 시스템의 경우 cc_tunsigned char이므로 %c 또는 %d으로 인쇄해야합니다.

+0

정확합니다. 이것들은 모두 ['man 3 termios'] (http://man7.org/linux/man-pages/man3/termios.3.html) 맨 페이지에 잘 설명되어 있습니다. ([link] (http://man7.org/linux/man-pages/man3/termios.3.html)는 [Linux man-pages project] (https://www.kernel.org/doc)를 가리 킵니다./man-pages /), 제 생각에는 이것들과 같은 세부 사항에 대한 가장 신뢰할 수있는 출처 중 하나입니다.) –