Pergunta

Se 2 descritores de arquivo foram duplicados para o mesmo arquivo (ou seja, 506 e STDOUT), irá invocar close(506) limpe o objeto associado a ambos e renderize STDOUT inutilizável?Ou o kernel implementa contagem de referência para seus arquivos?

Foi útil?

Solução

O kernel implementa a contagem de referências, portanto o objeto kernel não é fechado até que todos os identificadores de arquivo que apontam para ele sejam fechados.

Outras dicas

Os contadores de referência são amplamente utilizados dentro do kernel para evitar as condições de corrida devido à alocação e liberação simultâneas de um recurso. Um contador de referência é apenas um contador atomic_t associado a um recurso específico, como uma página de memória, um módulo ou um arquivo. O contador é aumentado atomicamente quando um caminho de controle do kernel começa a usar o recurso e diminui quando um caminho de controle do kernel termina usando o recurso. Quando o contador de referência se torna zero, o recurso não está sendo usado e pode ser liberado, se necessário.

Você pode se importar em ver isso se quiser olhar através isto Para uma visão geral da implementação de contagem de referência do kernel do Linux.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top