Redirecionamentos são implementados através da família de funções do sistema dup . dup
é a abreviatura de duplicação e quando você faz, por exemplo:
3>&2
você duplica ( dup2
) filedescritor 2 no filedescriptor 3, possivelmente fechando o filedescriptor 3 se já estiver aberto (o que não fará nada com seu processo pai, porque isso acontece em um filho fork
ed off (se isso não acontece (redirecionamentos nas funções do shell em certos contextos), o shell fará com que pareça que sim).
Quando você faz:
1<someFile
será open
someFile
em um novo descritor de arquivo (é o que normalmente faz o open
syscall) e então dup2
desse filedescriptor em 1.
O que o manual diz é que, se um dos arquivos dev especiais listados tomar o lugar de someFile
, o shell pulará a etapa open
-on-a-new-fd e, em vez disso, irá diretamente para dup2
o filedescriptor correspondente (isto é, 1 para / dev / stdout, etc.) no destino (filedescriptor no lado esquerdo do redirecionamento).