터미널 제어 termios
C & C++ 관련 :
2008. 8. 17. 15:32
반응형
출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/termios#AEN48
echo_off.c
위의 프로그램은 사용자 패스워드를 입력받는 일을한다. 패스워드의 경우 화면에 바로 출력되면 안됨으로, 터미널의 라인 출력 특성을 "반향 끔" 으로 설정하고 키입력을 받아들이도록 했다. 그리고 사용자 키입력을 "*" 로 대체 시켜서 화면에 출력하도록 해서 사용자 패스워드를 입력 받도록 만들었다.
echo_off.c
#include <stdlib.h> #include <stdio.h> #include <termios.h> #include <string.h> static struct termios stored_settings; void echo_off(void) { struct termios new_settings; tcgetattr(0, &stored_settings); new_settings = stored_settings; new_settings.c_lflag &= (~ECHO); new_settings.c_lflag &= (~ICANON); tcsetattr(0,TCSANOW, &new_settings); return ; } void echo_on(void) { tcsetattr(0, TCSANOW, &stored_settings); return ; } void get_pass(char *pass) { char buf; int i=0; printf("Passwd : "); echo_off(); while ((buf=getc(stdin)) != '\n') { pass[i] = buf; printf("%s", "*"); i ++; } echo_on(); } int main() { char pass[16]; memset(pass, 0x00, 16); get_pass(pass); printf("\nYour input : %s\n", pass); return 1; } |
반응형
'C & C++ 관련' 카테고리의 다른 글
strtok() 문자열을 문자로 자르기 (0) | 2008.10.15 |
---|---|
C언어에서 \n 과 \r 의 차이는 무엇인가요 (2) | 2008.08.17 |
가변인수 연습 va_ (0) | 2008.08.15 |