OS 표준 학급을위한 명령을 사용하지 않고 리눅스 표준 을 단순화 한 버전을 쓰고 있습니다. 더 쉽게 사용할 수 있도록 ncurses를 사용할 수 있습니다. "Simplified"는 화살표, PgUp, PgDown을 사용하여보기를 스크롤 할 수 있어야하고 g 및 G 점프 명령을 사용할 수 있어야합니다. 또한, 프로그램이 파일 (이 경우에는 아무런 문제가) 쉽게되었다 읽기C로 된 ncurses 앱 - 표준 입력 읽기
echo "test" | ./less
같은 입력하거나 파일에서 (그 이름이 매개 변수로 주어진) 또는 표준 입력 스트림을 읽어, 문제는 경우에 발생 파이프 라인 연산자를 사용하고 있습니다. getch()은 -1 (EOF)을 반환하고 키 입력에 응답하지 않습니다. 현재 코드는 다음과 같습니다.
char c;
while((c = fget(stdin)) != EOF)
{
// reading from stdin char by char, let's say
}
// enabling ncurses mode
initscr();
keypad(stdscr, TRUE);
noecho();
cbreak();
int ch;
while(true)
{
ch = getch();
switch(ch)
{
case KEY_LEFT:
...
}
}
...
나는 스트림을 내뿜기의 문제라고 생각했지만, 비슷한 해결책은 아무도 없었습니다. 나는 모든 데이터를 stdin에서 끝까지 읽었으므로 (EOF), 왜 EOF가 버퍼에 남아 있는지 이해하지 못한다.
해결 방법이 있습니까? 비슷한 질문을 통해 탐색했지만 내 문제에 대한 단서를 찾지 못했습니다. 어쩌면 ncurses가 내 작업을위한 좋은 해결책이 아닌가?
자신의 질문에 대한 대답을 추가! 하루가 지나면 그것을 받아 들일 수도 있습니다. –
나는 그렇게하고 싶었지만 당장에는 그렇게할만한 명성이 너무 적었습니다.) "명성이 100 명 미만인 사용자는 요청한 후 8 시간 동안 자신의 질문에 답변 할 수 없습니다." – PiotrK
이제 좋습니다. :-) –