Domanda

Se 2 descrittori di file sono stati dupped allo stesso file (cioè 506 e STDOUT), si invocando close(506) pulitura dell'oggetto associato da entrambi e rendere inutilizzabile STDOUT? O fa kernel implementare riferimento conteggio per i suoi file?

È stato utile?

Soluzione

Il kernel implementa il conteggio dei riferimenti, quindi l'oggetto del kernel non è chiuso fino a quando tutti i file maniglie che punta ad esso sono chiusi.

Altri suggerimenti

contatori di riferimento sono ampiamente utilizzati all'interno del kernel per evitare condizioni di gara a causa della concomitante di assegnazione e rilascio di una risorsa. Un contatore di riferimento è solo un contatore atomic_t associato a una risorsa specifica come ad esempio una pagina di memoria, un modulo o un file. Il contatore viene incrementato atomicamente quando un percorso di controllo kernel inizia utilizzando la risorsa, e diminuisce quando un percorso di controllo kernel termina utilizzando la risorsa. Quando il contatore di riferimento diventa zero, non viene utilizzata la risorsa, e può essere eventualmente diseccitato.

Si potrebbe prendersi cura di vedere questo se si vuole guardare attraverso questo per una panoramica di implementazione conteggio dei riferimenti Linux kernel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top