Différence entre / dev / null et / dev / zero

27

Lorsque vous essayez de rediriger vers /dev/nullet /dev/zero, la sortie vers laquelle il est rejeté. Il semble à la fois /dev/nullet /dev/zeroaccepter et abandonner toutes les entrées. Alors, quelle est la différence entre /dev/nullet /dev/zero?

Pandya
la source
6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero* s'enfuit *
joeytwiddle

Réponses:

52

Oui, les deux acceptent et suppriment toutes les entrées, mais leur sortie n'est pas la même:

  • /dev/nullne produit aucune sortie .
  • /dev/zeroproduit un flux continu d'octets NULL (valeur nulle) .

Vous pouvez voir la différence en exécutant cat /dev/nullet cat /dev/zero.

  • Essayez cat /dev/null > fileet vous trouverez un vide file.

  • Essayez maintenant cat /dev/zero > file, tout en regardant la taille du fichier ( watch -n 1 du -h file) augmenter continuellement. En effet, la lecture de /dev/zerodonne un flux infini de caractères \0(nuls).

Utilisez ddpour visualiser la différence de manière plus appropriée:

$ dd if=/dev/null of=file count=10
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000276193 s, 0.0 kB/s

$ dd if=/dev/zero of=file count=10
10+0 records in
10+0 records out
5120 bytes (5.1 kB) copied, 0.00090775 s, 5.6 MB/s

/dev/zero est utilisé pour créer des fichiers fictifs ou des échanges.

Visitez également:

Pandya
la source
Voir aussi thecodelesscode.com/case/6
kojiro
2
À noter: mmapping /dev/zeroavec MAP_PRIVATEest le moyen "portable" d'obtenir un mappage de mémoire anonyme (en l'absence d'extensions comme MAP_ANON).
nneonneo
6
Peut-être pas évident pour le lecteur occasionnel est de savoir comment /dev/null ne produit aucune sortie: Il signale EOF immédiatement.
Peter - Rétablir Monica le
Existe-t-il un appareil qui donne tout le monde?
Aaron Franke