Este snippet de código abre /dev/console
. O descritor de arquivo resultante é o descritor de arquivo com numeração mais baixa que ainda não está aberto. Se esse número for no máximo 2, o loop é executado novamente. Se esse número for 3 ou acima, o descritor será fechado e o loop será interrompido.
Quando o loop terminar, os descritores de arquivo 0 a 2 ( stdin, stdout e stderr ) estarão abertos. Eles já estavam abertos antes e podem estar conectados a qualquer arquivo ou acabaram de ser abertos, e estão conectados a /dev/console
.
A escolha de /dev/console
é estranha. Eu teria esperado /dev/tty
, que é sempre o terminal de controle associado ao grupo de processos do processo de chamada. Este é um dos poucos arquivos que o padrão POSIX requer que exista . /dev/console
é o console do sistema , que é onde as mensagens do syslog enviadas para o console vão ; não é útil para uma shell se importar com isso.