我正在运行 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/