我正在学习从内核模块编程指南编写字符设备驱动程序,并用于mknod
创建一个节点/dev
来与我的驱动程序对话。
rmnod
但是,在检查了联机帮助页并观察到这是一个不存在的命令之后,我找不到任何明显的方法来删除它。
什么是扭转效果的正确方法mknod
,并安全地删除创建的节点/dev
?
我正在学习从内核模块编程指南编写字符设备驱动程序,并用于mknod
创建一个节点/dev
来与我的驱动程序对话。
rmnod
但是,在检查了联机帮助页并观察到这是一个不存在的命令之后,我找不到任何明显的方法来删除它。
什么是扭转效果的正确方法mknod
,并安全地删除创建的节点/dev
?
正确的命令只是rm
:)
创建的设备节点mknod
只是一个包含设备主要和次要编号的文件。当您第一次访问该文件时,Linux 会寻找一个驱动程序来宣传该主要/次要并加载它。然后,您的驱动程序使用该文件处理所有 I/O。
当您删除一个设备节点时,通常的 Un*x 文件行为适用:Linux 将等到没有更多对该文件的引用,然后将其从磁盘中删除。
你的司机并没有真正注意到这一点。Linux 不会自动卸载模块。您的驱动程序将不再接收对任何操作的请求。但它会在任何人重新创建设备节点的情况下准备就绪。
您可能正在寻找功能而不是命令。unlink() 就是答案。如果没有进程打开文件,unlink() 将删除文件/特殊文件。如果任何进程打开了该文件,则该文件将一直保留到最后一个引用它的文件描述符关闭为止。在这里阅读更多:http: //man7.org/linux/man-pages/man2/unlink.2.html