pg\more\less 유틸리티가 어떻게 작동하는지 이해하려고 합니다. 예를 들어 cat somebigfile | 이제 더 많은 대화형 모드가 있습니다. 그의 fd 테이블은 다음과 같습니다: 0(cat에서 파이프 읽기) 1(stdout) 2(stderr)
3 fd에서 /dev/tty를 열고 거기에서 명령을 읽을 수 있습니다. 그러나 Enter 키를 누르지 않고도 특정 작업을 수행할 수 있다는 것이 더 중요합니다. 리눅스에서는 ncurses를 사용할 수 있습니다. 이를 Solaris에서 구현하려면 무엇을 알아야 합니까?
답변1
기본 아이디어는 입력에서 문자를 읽는 것입니다().http://bazaar.launchpad.net/~vcs-imports/util-linux-ng/trunk/view/head:/text-utils/more.c#L1908예를 들어 (Google 검색 결과를 통해 찾았습니다.https://stackoverflow.com/questions/9854267/implementing-the-more-unix-utility-command):
int readch(void)
{
unsigned char c;
errno = 0;
if (read(fileno(stderr), &c, 1) <= 0) {
if (errno != EINTR)
end_it(0);
else
c = otty.c_cc[VKILL];
}
return (c);
}