Что противоположно "mknod"?
Я участвую в написании драйверов символов персонажа из Руководства по программированию модулей ядра] и использовал mknod
для создания node в /dev
для разговора с мой водитель.
Однако я не могу найти какой-либо очевидный способ удалить его после проверки man-страницы и наблюдения, что rmnod
- несуществующая команда.
Каков правильный способ изменить эффект mknod
и безопасно удалить node, созданный в /dev
?
Ответы
Ответ 1
Правильная команда - это просто rm
:)
Устройство node, созданное mknod
, - это просто файл, который содержит основной и младший номер устройства. При первом обращении к этому файлу Linux ищет драйвер, который рекламирует этот майор/минор и загружает его. Затем ваш драйвер обрабатывает все операции ввода-вывода с этим файлом.
При удалении устройства node обычно используется обычное поведение файла Un * x: Linux будет ждать, пока не будет больше ссылок на файл, а затем он будет удален с диска.
Ваш водитель на самом деле ничего не замечает. Linux не автоматически выгружает модули. Ваш водитель wil просто больше не получает запросы на что-либо. Но он будет готов, если кто-нибудь воссоздает устройство node.
Ответ 2
Вероятно, вы ищете функцию, а не команду. unlink() - ответ. unlink() удалит файл/специальный файл, если процесс не открывается. Если какие-либо процессы открывают файл, файл останется до тех пор, пока последний дескриптор файла, ссылающийся на него, не будет закрыт. Подробнее здесь: http://man7.org/linux/man-pages/man2/unlink.2.html