我正在学习从Kernel Module Programming Guide编写字符设备驱动程序,并使用mknod在/dev中创建了一个节点来与我的驱动程序对话。
但是,在检查手册页并观察到rmnod是一个不存在的命令后,我找不到任何明显的方法来删除它。
要扭转mknod的影响并安全地删除在/dev中创建的节点,正确的方法是什么
发布于 2014-08-10 17:53:22
正确的命令是rm :)
由mknod创建的设备节点只是一个包含设备主号和次号的文件。当您第一次访问该文件时,Linux会查找通告该主要/次要文件的驱动程序并加载它。然后,您的驱动程序处理该文件的所有I/O。
当您删除设备节点时,通常的Un*x文件行为适用: Linux将等待,直到不再引用该文件,然后将其从磁盘中删除。
你的司机并没有真正注意到这一点。Linux不会自动卸载模块。你的驱动程序将不再接收做任何事情的请求。但它将准备就绪,以防有人重新创建设备节点。
发布于 2017-08-10 02:34:23
您可能正在寻找一个函数而不是一个命令。unlink()就是答案。如果没有进程打开文件,unlink()将删除文件/特殊文件。如果任何进程打开了该文件,则该文件将一直保留,直到最后一个引用它的文件描述符关闭。点击此处阅读更多信息:http://man7.org/linux/man-pages/man2/unlink.2.html
https://stackoverflow.com/questions/22487722
复制相似问题