거의 동일한 방법으로 동일한 문제를 해결하는 두 가지 옵션이 있습니다. 첫 번째는 프로그램을 실행할 때 stdbuf
을 사용하는 것입니다. 호출은 다음과 같습니다 그 사용
는
stdbuf -i0 ./a.out
라인 버퍼링되는 것을 stdin
을 방지하고, 당신이 그런 일이 같은 입력을 검색 할 fread()
또는 이와 유사한 명령을 사용하게됩니다.
다른 하나는 모드에 터미널을 넣는 것입니다. 그것은 잘 설명 된 here입니다. 그러나 제어 문자가 더 이상 다루어지지 않는다는 단점이 있습니다. 귀하의 프로그램에서
#include <termios.h>
main(){
struct termios trm;
tcgetattr(STDIN_FILENO, &trm); /* get the current settings */
trm.c_cc[VMIN] = 1; /* return after 1 byte read; you might make this a 2*/
trm.c_cc[VTIME] = 0; /* block forever until 1 byte is read */
tcsetattr(STDIN_FILENO, TCSANOW, &trm);
}
감사합니다. curses.h에서 cbreak를 사용하여 원시 모드 사용을 중단했습니다. – Aaron