Il file / dev / null ha effettivamente una dimensione fissa?


23

Ho appena scoperto che /dev/nullè un file e non una directory.

Mi chiedo solo se ha una dimensione del file effettiva.

Risposte:


35

/dev/nullnon è davvero un file. È un dispositivo personaggio !

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null

La prima lettera cdella stringa di autorizzazioni ( crw-rw-rw-) indica questo. Per i file regolari, sarebbe -invece un .

Quindi, in parole semplici: /dev/nullnon è un file ma un dispositivo virtuale mappato a questo percorso nel file system, che ha il solo scopo di ingoiare e svanire i dati - come un buco nero.
Può anche essere usato come input, quindi si comporta come un file vuoto (dimensione 0) e restituisce immediatamente un EOF (End Of File).

Pertanto non si può davvero dire che /dev/nullha una dimensione specifica del file, in quanto non è un file normale su qualsiasi supporto di memorizzazione.


Ingresso? Cosa fornisce un elenco infinito di caratteri NUL?
Jonathon

@JonathonWisnoski Non lo so esattamente e non l'ho mai usato in questo modo, quindi posso semplicemente darti questo link a una domanda su StackOverflow in cui è spiegato.
Byte Commander

7
@JonathonWisnoski, no - si comporta come un file di dimensioni zero sull'input, quindi la prima lettura da esso riporta che il file è su EOF.
godlygeek,

Sì, è corretto.
godlygeek,

3
@JonathonWisnoski guarda / dev / zero per questo.
Paŭlo Ebermann,

16

/dev/nullè un tipo speciale di file chiamato " file dispositivo ".

I file del dispositivo fungono da interfaccia per alcune funzioni del kernel. Occupano solo lo spazio necessario per una voce di directory (" inode ") ma non hanno alcun contenuto reale e non hanno una dimensione effettiva del file.

Altri file di dispositivo sono ad esempio /dev/sda(generalmente un HDD o SSD), /dev/zero(un file che genera zero durante la lettura) o /dev/random(un file che genera dati casuali durante la lettura). In realtà tutti i file in /dev/sono file di dispositivo o collegamenti che puntano a file di dispositivo.


Mentre trovo la maggior parte di questa risposta corretta (+1), penso che sia un po 'fuorviante dire che occupano le dimensioni di una voce di inode. O non occupano spazio, se si riferiscono allo spazio su disco, o ne occupano di più, se si riferiscono alla loro intera implementazione come dispositivi a caratteri.
kos

2
Proprio come qualsiasi altro file, un file del dispositivo necessita di un inode che memorizza il proprietario, le autorizzazioni, il numero maggiore / minore e altri metadati. Dipende dal file system come e dove sono archiviati questi inode (è possibile utilizzare mknodper creare file di dispositivi ovunque si desideri). Per i file system virtuali come /dev/l'inode non occupa spazio su disco ma un po 'di memoria.
Florian Diesch,

Esattamente. Penso di non essermi espresso bene, quindi lasciami riformulare. Forse quello che sto sottolineando è un po 'esigente, quindi perdonami per questo. Quello che intendevo dire è che se affermi che ogni dispositivo a caratteri occupa uno spazio in memoria a causa della sua voce inode, forse vuoi sottolineare che le funzioni da chiamare in lettura / scrittura su tale dispositivo, che vengono caricate insieme a loro, fanno quindi anche.
kos

È davvero corretto dire che un file occupa lo spazio occupato dalla voce della tabella degli inode? Non penso che questo sia solitamente incluso in ciò che la gente - e la gente del software ha scritto - intendono quando parlano della dimensione del file. In particolare, chiedendo lse duriportando la dimensione di un dispositivo speciale carattere /dev/nullo come /dev/random0 restituisce .
Eliah Kagan,

Scusate, ma ho annullato la votazione per questa risposta, perché a meno che qualcuno non mi dimostri che cosa ho detto (cosa che potrei essere), continuo a pensare che non sia corretto affermare che un dispositivo a caratteri occupa lo spazio di una voce di inode.
kos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.