command-line linux-kernel linux-device-driver kernel-module mknod

command line - ¿Qué es lo contrario de `mknod`?



command-line linux-kernel (2)

Estoy aprendiendo a escribir controladores de dispositivo de caracteres desde la Guía de programación de Kernel Module , y usé mknod para crear un nodo en /dev para hablar con mi controlador.

Sin embargo, no puedo encontrar una forma obvia de eliminarlo, después de revisar la página de manual y observar que rmnod es un comando inexistente.

¿Cuál es la forma correcta de revertir el efecto de mknod y eliminar de forma segura el nodo creado en /dev ?


El comando correcto es simplemente rm :)

Un nodo de dispositivo creado por mknod es solo un archivo que contiene un número mayor y menor de dispositivo. Cuando accede a ese archivo por primera vez, Linux busca un controlador que anuncia ese mayor / menor y lo carga. Su controlador maneja todas las E / S con ese archivo.

Cuando elimina un nodo de dispositivo, el comportamiento habitual del archivo Un * x es válido: Linux esperará hasta que no haya más referencias al archivo y luego se eliminará del disco.

Su conductor realmente no nota nada de esto. Linux no descarga módulos de forma automática. Su controlador simplemente ya no recibirá solicitudes para nada. Pero estará listo en caso de que alguien vuelva a crear el nodo del dispositivo.


Probablemente estés buscando una función en lugar de un comando. unlink () es la respuesta. unlink () eliminará el archivo / archivo especial si ningún proceso tiene el archivo abierto. Si algún proceso tiene el archivo abierto, entonces el archivo permanecerá hasta que se cierre el último descriptor de archivo que lo refiere. Lea más aquí: http://man7.org/linux/man-pages/man2/unlink.2.html