web-dev-qa-db-fra.com

Quel est l'opposé de `mknod`?

J'apprends à écrire des pilotes de périphériques de caractères à partir du Guide de programmation du module du noya , et j'ai utilisé mknod pour créer un nœud dans /dev pour parler à mon chauffeur.

Cependant, je ne trouve aucun moyen évident de le supprimer, après avoir vérifié la page de manuel et observé que rmnod est une commande inexistante.

Quelle est la bonne façon d'inverser l'effet de mknod et de supprimer en toute sécurité le nœud créé dans /dev?

35
merlin2011

La commande correcte est simplement rm :)

Un nœud de périphérique créé par mknod est juste un fichier qui contient un numéro majeur et mineur de périphérique. Lorsque vous accédez à ce fichier la première fois, Linux recherche un pilote qui annonce ce majeur/mineur et le charge. Votre pilote gère ensuite toutes les E/S avec ce fichier.

Lorsque vous supprimez un nœud de périphérique, le comportement habituel du fichier Un * x s'applique: Linux attendra qu'il n'y ait plus de références au fichier, puis il sera supprimé du disque.

Votre chauffeur ne s'en rend pas vraiment compte. Linux ne décharge pas automatiquement les modules. Votre chauffeur ne recevra tout simplement plus de demandes concernant quoi que ce soit. Mais il sera prêt au cas où quelqu'un recréerait le nœud de périphérique.

37
1000 Bites

Vous recherchez probablement une fonction plutôt qu'une commande. unlink () est la réponse. unlink () supprimera le fichier/fichier spécial si aucun processus n'a ouvert le fichier. Si un processus a ouvert le fichier, le fichier restera jusqu'à ce que le dernier descripteur de fichier s'y référant soit fermé. En savoir plus ici: http://man7.org/linux/man-pages/man2/unlink.2.html

1
Mahantesh Salimath