A chamada do sistema open
normalmente retorna o descritor de arquivo mais baixo que ainda não está em uso. Para programas típicos, os arquivos abertos começam em 3 porque os descritores de arquivo 0, 1 e 2 são usados para os descritores padrão pré-abertos (entrada, saída e erro). O daemon nunca lerá nenhuma entrada ou produzirá qualquer saída, portanto, eles normalmente fecham os descritores de arquivo 0 e 1 ou reabriam /dev/null
lá. Se o daemon fechar o descritor de arquivos 0, o próximo arquivo que abrir será nesse descritor. Não há nada de errado com isso.
O descritor de arquivo 0 não é realmente “atribuído a stdin” - em vez disso, ele é stdin por definição de stdin. Ambientes normais de execução têm o descritor de arquivo 0 aberto para entrada, mas um programa que não lê nenhuma entrada está livre para usar esse descritor para qualquer propósito que queira.