나래머드 컴파일 에러 질문1 : ioctl()에서 TIOCGETA, TIOSETA
글쓴이: ophmun / 작성시간: 수, 2010/06/23 - 7:14오후
Ubuntu 10.04 / gcc 4.4.3 입니다
컴파일 중 에러메시지가 뜨며 컴파일이 안 됩니다
interpreter.c: In function ‘echo_local’: interpreter.c:623: warning: implicit declaration of function ‘ioctl’ interpreter.c:623: error: ‘TIOCGETA’ undeclared (first use in this function) interpreter.c:623: error: (Each undeclared identifier is reported only once interpreter.c:623: error: for each function it appears in.) interpreter.c:625: error: ‘TIOCSETA’ undeclared (first use in this function)
소스의 해당 부분입니다
void echo_local(int fd) { struct termios io; ioctl(fd, TIOCGETA, &io); io.c_lflag |= ECHO; ioctl(fd, TIOCSETA, &io); }
혹 BSD와 linux의 차이일까요 (원래 BSD에서 돌아가던 걸로 보입니다)
http://onlamp.com/pub/a/onlamp/2001/06/07/linux_bsd.html?page=2
어떻게 고쳐야 컴파일이 되겠습니까? ㅜㅜ
Forums:
man tcgetattr man tcsetattr
man tcgetattr
man tcsetattr
죄송합니다
매뉴얼을 읽어보았는데 모르겠습니다-.-
음..
ioctl(fd, TIOCGETA, &io); 대신 tcgetattr() 과 tcsetattr() 을 사용하라는 뜻일겁니다.
헤더 뒤져보니 TIOCGETA 는 사용되지 않는듯 하네요..
아래에 echo on/off 예제가 있습니다. 참고하시면 될 듯 싶네요.
http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/termios
아니면 Makefile 에서 -DHAVE_TERMIOS_H 를 없애고 빌드해도 될겁니다.
단지, 터미널 제어는 해본 적이 별로 없어서..
ioctl 의 TCGETA/TCSETA 조합으로 echo 를 컨트롤 할 수 있는지에 확답은 못 드리겠네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기