%20.png)
Estou tentando entender como funciona os utilitários pg\more\less. Por exemplo, cat somebigfile | mais. Mais agora em modo interativo. Sua tabela fd é: 0 (leia o pipe do gato) 1 (stdout) 2 (stderr)
Posso abrir /dev/tty em 3 fd e ler comandos daí. Mas mais podem executar algumas ações sem pressionar Enter. No Linux eu posso usar ncurses. O que preciso perceber para ter sucesso no Solaris?
Responder1
A ideia básica é ler() um caractere da sua entrada; verhttp://bazaar.launchpad.net/~vcs-imports/util-linux-ng/trunk/view/head:/text-utils/more.c#L1908como exemplo (que descobri por meio de um resultado de pesquisa do Google dehttps://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);
}