O unix / linux mantém uma lista de todos os descritores de arquivos gratuitos?

0

Eu estou lendo Linux System Programming por Robert Love e tentando entender o conceito de descritores de arquivos.

Ele menciona que

File descriptors start at 0 and go up to one less than this maximum value. By default, the maximum is 1,024

Por exemplo, eu tenho dois arquivos abertos usando os descritores de arquivo 500 e 501, respectivamente.

Agora, se o arquivo com o descritor de arquivo 500 estiver fechado, isso significa que o próximo fd a ser alocado será 502? Pode reutilizar 500? Se sim, como pode fazer isso, o kernel mantém todos os descritores de arquivos fechados?

    
por ng.newbie 03.01.2018 / 10:33

2 respostas

2

O Linux como em qualquer sistema similar ao Unix usa uma tabela de distribuidores de arquivos que é mantida pelo kernel. open cria um descritor reutilizando o descritor de arquivo fechado mais baixo ou cria uma nova entrada. close define essa entrada fechada na tabela.

    
por 03.01.2018 / 11:00
2

A página man do Linux para open(2) afirma que

The file descriptor returned by a successful call will be the lowest-numbered file descriptor not currently open for the process.

Então, se você tem apenas 500 e 501 aberto, o próximo que você recebe é 0. Normalmente, é claro que você tem 0 ( stdin ), 1 ( stdout ) e 2 ( stderr ) apontando para algo sensato, ou /dev/null se você é um daemon.

    
por 03.01.2018 / 10:52