Cada processo possui sua própria tabela de descritores de arquivos. O descritor de arquivo 4 no processo 1234 aponta para a tabela do processo 1234. O descritor de arquivo 4 no processo 5678 aponta para a 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 eles foram redirecionados.
Um processo pode abrir o mesmo arquivo mais de uma vez. Isso pode acontecer por coincidência, por exemplo, quando a saída padrão de um processo e o erro padrão são redirecionados para o mesmo terminal ou para o mesmo arquivo. As entradas subjacentes da tabela de arquivos (por exemplo, Linuxstruct file ) carregam mais do que informações 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 o mesmo terminal aberto para gravação apenas no descritor de arquivo 2. As entradas de tabelas de arquivos também contêm a posição do processo no arquivo; um processo pode querer lseekduas posições diferentes no mesmo arquivo e, portanto, seria usado duppara obter duas alças para esse arquivo.
4nos dois processos seja relativo ao seu próprio número de fd abertos. Os0-2DFs (stdin, stdout, sdterr) são sempre abertos para um novo processo e os números não são reservados apenas para esse processo.