2014-03-25 1 views
0

Cygwin/Mintty에서 원시 입력 모드로 내 표준 입력을 원합니다. 어떻게해야합니까? 지금은 라인 버퍼입니다. 원시 입력 모드에서는 입력 한 모든 문자에 대해 read이 반환됩니다.Cygwin/Mintty에서 stdin의 원시 입력 모드

나는 더 이상의 의존성없이 그것을하고 싶다. 나는. 아마도 Cygwin의 일부 libs에 링크하여이 작업을 수행 할 수 있다고 생각합니다. 그러나 가능한 경우이를 피하고 싶습니다.

일부 검색 결과 : libuv issue, libuv win/tty.c, Cygwin tty.cc, Cygwin fhandler_tty.cc, Cygwin post (non-blocking stdin), Mintty issue, Msysgit issue

내가 SetConsoleMode 통해했지만, 그뿐만 아니라 Mintty를 들어, Windows 콘솔 작동합니다. 나는. 이 코드 :

// Setting terminal to raw mode... 
    HANDLE hStdin; 
    DWORD mode; 
    //hStdin = GetStdHandle(STD_INPUT_HANDLE); 
    hStdin = (HANDLE) _get_osfhandle(STDIN_FILENO); 

    if (GetFileType(hStdin) == FILE_TYPE_CHAR) { 
     cout << "stdin is file type char" << endl; 
     GetConsoleMode(hStdin, &mode); 
     if (
      !SetConsoleMode(
       hStdin, 
       mode & ~(ENABLE_LINE_INPUT|ENABLE_ECHO_INPUT)) 
     ) { 
      cerr << "Cannot set stdin to raw mode" << endl; 
      // ignore... 
     } 
    } 

답변

0

system("stty -raw");이 작동합니까?

+0

새로운 질문이있는 경우 [질문하기] (http://stackoverflow.com/questions/ask) 버튼을 클릭하여 질문하십시오. 컨텍스트를 제공하는 데 도움이되는 경우이 질문에 대한 링크를 포함하십시오. – trudyscousin

+0

@trudyscousin 새로운 질문이 아니라 그의 질문에 대한 해결책을 제안했습니다. – chacham15