J'essaie de comprendre le concept de fichiers spéciaux sous Linux. Cependant, avoir un fichier spécial dans /dev
semble tout simplement idiot alors que sa fonction pourrait être implémentée par une poignée de lignes en C à ma connaissance.
De plus, vous pouvez l'utiliser à peu près de la même manière, c'est-à-dire en passant par null
au lieu de rediriger vers /dev/null
. Y a-t-il une raison spécifique pour l'avoir comme fichier ? Le fait d'en faire un fichier ne cause-t-il pas de nombreux autres problèmes, comme trop de programmes accédant au même fichier ?
Réponse acceptée :
Outre les avantages en termes de performances de l'utilisation d'un appareil spécial personnage, le principal avantage est la modularité . /dev/null peut être utilisé dans presque tous les contextes où un fichier est attendu, pas seulement dans les pipelines shell. Considérez les programmes qui acceptent les fichiers comme paramètres de ligne de commande.
# We don't care about log output.
$ frobify --log-file=/dev/null
# We are not interested in the compiled binary, just seeing if there are errors.
$ gcc foo.c -o /dev/null || echo "foo.c does not compile!".
# Easy way to force an empty list of exceptions.
$ start_firewall --exception_list=/dev/null
Ce sont tous des cas où l'utilisation d'un programme comme source ou puits serait extrêmement lourde. Même dans le cas du pipeline shell, stdout et stderr peuvent être redirigés vers des fichiers indépendamment, ce qui est difficile à faire avec des exécutables comme récepteurs :
# Suppress errors, but print output.
$ grep foo * 2>/dev/null