이 블로그 검색

2017년 2월 10일 금요일

close(0) 로 인한 stdin close : getline, getchars 동작 이상

왜 getline() 함수가 즉시 리턴되는가? 에 대한 삽질의 기억...


class SomeClass
{
    ...
    int nSockFd_  {0}; //초기화를 0 으로 한 경우.
    ...
};     

void SomeClass::SomeMethod1()
{
    .... 
    //코드 어딘가에서 다음을 호출했는데... 아직 nSockFd_ 가 할당안된 경우 
    close(nSockFd_); //--> close(0) --> stdin 을 닫아버림 - - ;;
    ... 
}

void SomeClass::SomeMethod2()
{ 
   ....  
   std::string line="";
    while(true)
    {  
        std::cin.clear();
        getline(std::cin, line); //여기서 문제 발생, 즉시 리턴됨
        std::cout << "msg:" << line << std::endl;
    }
}

댓글 3개:

  1. 우선 게시물과 전혀 관계 없는 질문드려서 죄송합니다.
    2012년도 게시물에 부스트 라이브러리 강좌 글이 있었는데... 지우셨는지요?

    답글삭제
  2. https://theboostcpplibraries.com/ 에 있는 내용을 번역한것이 있는데, 원저자의 허락도 없이 게시하는게 아무래도 도리가 아닌듯 하여 비공개로 전환했습니다. 해당 사이트에서 깊이있는 내용을 직접 보시는게 아무래도 훨씬 좋을듯 합니다.

    답글삭제