c - unregister_chrdev 不会从/dev/中删除设备

标签 c linux-kernel

我正在运行 unregister_chrdev(major, "mod_name");,但我仍然可以在 ls -l/dev/ 中使用该设备。

我做错了什么?

最佳答案

register_chrdev(9)unregister_chrdev(9) 实际上并不在 /dev 目录中创建或删除文件。您应该通过加载脚本预先创建它们。删除也是一样,需要手动删除。

参见scull example , scull_load 在使用 insmod 加载模块后创建一个 char 文件(与您的模块具有相同的主编号)。 scull_unload 类似,使用rmmod卸载后删除/dev下的文件。

作为@myaut suggested ,这也可以使用 device_create 来完成,但这是一个仅限 GPL 的函数,如果您的模块未获得 GPL 许可,您将必须手动创建文件。

关于c - unregister_chrdev 不会从/dev/中删除设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580159/

相关文章:

c - 映射到内存中的本地 APIC 寄存器仅包含 1

c++ - 使用 WaitForMultipleObjects 时如何获取哪个对象超时?

linux - 设备驱动程序不工作

c变量分配内存,指针

c - 将字符串数组传递给 C 中的函数

linux-kernel - 如何在 OpenWrt 中为内核模块编写 makefile 以自动加载模块

linux - Linux 中 'n' 进程之间的文件访问(读/写)同步

c - 如何在 linux 中使用 ioctl 获取网关 ip 和名称服务器 ip

c - 用 C 直接读写压缩文件

c - 何时对结构使用指针与直接成员