GNU/Linux >> Tutoriales Linux >  >> Linux

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

Estoy tratando de entender el concepto de archivos especiales en Linux. Sin embargo, tener un archivo especial en /dev parece simplemente tonto cuando su función podría implementarse con un puñado de líneas en C que yo sepa.

Además, podría usarlo prácticamente de la misma manera, es decir, canalizarlo a null en lugar de redirigir a /dev/null . ¿Hay alguna razón específica para tenerlo como un archivo? ¿Convertirlo en un archivo no causa muchos otros problemas, como demasiados programas que acceden al mismo archivo?

Respuesta aceptada:

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 las canalizaciones 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 sumidero sería extremadamente engorroso. Incluso en el caso de la canalización 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

Linux
  1. Cómo ejecutar un archivo sh desde otro archivo sh

  2. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

  3. /dev/sdb:No existe tal archivo o directorio (pero /dev/sdb1, etc. existe)

  4. Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

  5. Crear un dispositivo de bloque virtual que escriba en /dev/null

¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

¿Es>&- más eficiente que>/dev/null?

¿Cuándo usar /dev/random Vs /dev/urandom?

/dev/null en Linux

¿Por qué se requieren < o > para usar /dev/tcp?