2011-02-10 3 views
1

VT 호환 데이터 수집기에서 실행해야하는 콘솔 응용 프로그램을 작성 중입니다. 일부 에뮬레이터를 시도한 후에 다른 표준 동작을 발견했습니다.VT 터미널 - 로컬 편집 및 반향 사용 안 함

대부분의 에뮬레이터는 로컬 데이터 버퍼를 가지고 있으며 리턴 키를 누르면 서버로 보냅니다. 입력 된 텍스트를 편집 할 수 있습니다.

사용자가 화면 레이아웃을 엉망으로 만들 수 있기 때문에이 기능은 나에게 좋지 않습니다.

문자의 국부 반향을 사용 불가능하게하고 (서버가 문자를 보내도록 허용하는) 이스케이프 코드는 무엇이며 RETURN 키를 기다리지 않고 서버에 즉시 데이터를 보내도록 터미널을 설정합니까?

당신에게 로컬 시성이라고 버퍼링 데이터의

답변

4

이 기능을 감사드립니다.

#include <string.h> /* for memcpy() */ 
#include <termios.h> 

struct termios term_stored; 
struct termios term_new; 
tcgetattr(0,&term_old); 
memcpy(&term_new,&term_stored,sizeof(struct termios)); 
term_new.c_lflag &= ~(ECHO|ICANON); /* disable echo and canonization */ 
tcsetattr(0,TCSANOW,&term_new); 

/* your code */ 

tcsetattr(0,TCSANOW,&term_stored); /* restore the original state */ 

을 또는 libedit, ncurses 또는 작성한 Readline 사용을 고려 : 그것은 (뿐만 아니라 에코 등)를 사용하지 않으려면 않습니다.