분석지점 |
if ( !isatty(ttyfd) )
perror("not on a tty");
Isatty : 파일 지정자가 터미널을 사용하는지 검사한다.
출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/isatty
perror
출처 : http://itguru.tistory.com/53
void perror ( const char * str );
C 형식 문자열로 시스템 오류 메세지 다음에 이어서 출력할 사용자 정의 메세지이다.
만일 널 포인터라면, 시스템 오류 메세지 다음에 어떠한 메세지도 출력되지 않는다.
관습적으로 프로그램의 이름이 인자로 주로 사용된다.
오류 메세지를 출력한다.
전역 변수 errno 의 값을 해석하여 이에 해당하는 시스템 오류 메세지를 표준 오류 출력 스트림(standard error output stream, stderr) 에 출력한다. 보통 stderr 은 화면이다. 또한 추가적으로 전달하고자 하는 사용자 정의 메세지를 str 인자에 담아 출력할 수 도 있다.
errno 는 정수형 변수로 이전의 라이브러리 함수에 의해 발생한 오류에 대한 정보를 가지고 있다. 이 때, errno 에 값에 따라 perror 함수에 의해 출력되는 시스템 오류 메세지는 플랫폼이나 컴파일러에 따라 달라질 수 있다.
만일 str 이 널 포인터가 아니라면 사용자 정의 메세지가 시스템 오류 메세지 이전에 출력된다. 이 때 두 개의 메세지는 ": " 로 구분된다. 그리고 str 이 널 포인터인지 아닌지에 상관 없이 맨 마지막에는 개행 문자('\n')가 출력된다.
perror 은 오류가 발생한 바로 다음에 호출되어야 한다. 그렇지 않을 경우 다른 함수들의 호출에 의해 출력 결과가 달라질 수 있다.
if ( tcgetattr(ttyfd, &orig_termios) < 0 )
perror("can't get tty settings");
함수 : int tcgetattr(int filedes, struct termios *termios_p) 이 함수는 파일기술자 filedes와 연관된 터미널 디바이스의 속성을 시험하는데 사용된다. 그 속성은 구조체 termios_p가 가리키는 곳으로 반환된다. 만일 성공하면, tcgetattr 은 0을 반환하고, 실패하면 -1을 반환한다. 다음의 errno는 이 함수를 위해 정의된 에러상황이다. EBADF : filedes 인수가 유용한 파일기술자가 아니다. ENOTTY : filedes 가 터미널과 연관이 없다. if (tcgetattr (desc, &settings) < 0) { perror ("error in tcgetattr"); return 0; } |
atexit(tty_exit);
다음과 같음 함수를 실행 한다. |
tty_raw();
'CAT-Security > 미분류' 카테고리의 다른 글
[Secuinside2013] beist_attack_game_150 (0) | 2014.05.02 |
---|---|
gdb 명령어 요약집 (0) | 2014.04.28 |
Python 예외처리 (0) | 2014.01.09 |
리버싱의 기초 정리 (0) | 2013.07.23 |
MBR 덤프해서 16비트 어셈블리 코드로 보는방법 (0) | 2013.07.22 |