Cada processo tem sua própria tabela de descritores de arquivos. Descritor de arquivo 4 no processo 1234 pontos dentro da tabela do processo 1234. Descritor de arquivo 4 no processo 5678 pontos dentro da tabela do processo 5678. Um caso com o qual você deve estar familiarizado são os descritores de arquivo 0, 1 e 2, que para cada processo são a entrada padrão, a saída padrão e o erro padrão, apontando para onde foram redirecionados.
Um processo pode abrir o mesmo arquivo mais de uma vez. Isso pode acontecer coincidentemente, por exemplo, quando a saída padrão e o erro padrão de um processo são redirecionados para o mesmo terminal ou para o mesmo arquivo. As entradas da tabela de arquivos subjacentes (por exemplo, struct file
do Linux) carregam mais que informação sobre o arquivo; eles também contêm modos de abertura (por exemplo, leitura ou gravação) e outro estado (como sinalizadores, por exemplo, close-on-exec). Por exemplo, um processo pode ter um terminal aberto para leitura apenas no descritor de arquivo 0 e esse mesmo terminal aberto para gravação somente no descritor de arquivo 2. As entradas das tabelas de arquivos também contêm a posição do processo no arquivo; um processo pode querer lseek
para duas posições diferentes no mesmo arquivo e, portanto, usaria dup
para obter duas alças para esse arquivo.