[질문]프로그램 종료시 tcsetattr()를 호출하면 콘솔이 작동을

dufmadlek의 이미지

저는 FC3를 쓰고 있고 시리얼통신을 하고 있습니다.
시리얼 통신 예제 프로그램데로 장치를 open()하고 이전 I/O설정을 백업한후 자신이 원하는 작업이 종료될때 예전 I/O설정을 tcsetattr()하는거로 알고 있는데요. 프로그램이 종료된 후 콘솔창이 이상해집니다.

void Init()
{
  m_iFD = open( path, O_RDWR | O_NOTTY | O_NONBLOCK);
tcflush( m_iFD, TCIFLUSH );
//이전설정 백업
tcgetattr( m_iFD, &m_oldtio );
tcsetattr( m_iFD, TCSANOW, pTermios );
...
}

void UnInit()
{
   // tcsetattr을 호출하면 콘솔 터미널이 이상하게 동작함
   tcsetattr( m_iFD, TCSANOW, &m_oldtio );
   close( m_iFD );
}

현재는 프로그램이 종료된 후
$>reset
reset 명령어를 이용하고 있는데... 제 코드상에 문제가 있는거 같은데 어떤건지 잘 모르겠습니다.

읽어주셔서 감사합니다. (_ _)