files – ¿Por qué / dev / null es un archivo? ¿Por qué su función no se implementa como un programa simple?

Pregunta:

Estoy tratando de comprender el concepto de archivos especiales en Linux. Sin embargo, tener un archivo especial en /dev parece una tontería cuando su función podría ser implementada por un puñado de líneas en C que yo sepa.

Además, podría usarlo de la misma manera, es decir, canalizando a null en lugar de redirigir a /dev/null . ¿Existe una razón específica para tenerlo como archivo? ¿Convertirlo en un archivo no causa muchos otros problemas, como que muchos programas accedan al mismo archivo?

Respuesta:

Además de los beneficios de rendimiento de usar un dispositivo especial para personajes, el beneficio principal es la modularidad . / dev / null se puede usar en casi cualquier contexto donde se espera un archivo, no solo en tuberías de shell. Considere los programas que aceptan archivos como parámetros de línea de comandos.

# 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

Todos estos son casos en los que usar un programa como fuente o receptor sería extremadamente engorroso. Incluso en el caso de la tubería de shell, stdout y stderr pueden redirigirse a archivos de forma independiente, algo que es difícil de hacer con ejecutables como sumideros:

# Suppress errors, but print output.
$ grep foo * 2>/dev/null

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım