Como getc () armazena em buffer os dados lidos antes de retorná-los, portanto, uma chamada para getc()
não resulta necessariamente em uma chamada para read()
. read()
é uma chamada de sistema, que leva muito mais tempo para ser realizada do que uma chamada de função normal, porque o kernel tem mais operações para fazer. Quando você entra no espaço do kernel, ele muda sua pilha, salva todo o contexto, lida com as interrupções para mascarar, e no outro lado, quando terminar, restaura o contexto, as interrupções, recoloca sua pilha de espaço do usuário. É por isso que getc () é o preferido porque poupa uma sobrecarga importante se você já tiver dados em buffer disponíveis.