c - 什么时候为内核空间中的打开文件创建`struct file*`?
问题描述
我正在学习 Linux Kernel,主要是阅读LDD3。我有点困惑。也就是说(ch3,第 53 页):
该
file
结构代表一个打开的文件。(它不特定于设备驱动程序;系统中每个打开的文件在struct file
内核空间中都有一个关联。)它由内核在打开时创建,并传递给对该文件进行操作的任何函数,直到最后一个close。在文件的所有实例都关闭后,内核释放数据结构。
另一方面,较早的人可以阅读有关open
文件操作的信息(ch3,p.51):
虽然这始终是对设备文件执行的第一个操作,但驱动程序不需要声明相应的方法。如果此条目为 NULL ,则打开设备始终成功,但不会通知您的驱动程序。
那么如果我不提供这个文件操作,那么当file
创建对应于我的打开文件时呢?例如,我写了一个小例子,它在文件系统中生成一个文件/proc
,但没有提供open
文件操作——只有read
操作:
static struct file_operations this_proc_ops =
{
.owner = THIS_MODULE,
.read = this_proc_read
};
我可以打开它并成功阅读。file
我想如果没有内核空间中的对应是不可能的,不是吗?所以我的问题是struct file
在这种情况下何时创建?
解决方案
推荐阅读
- python - How to create specific file format with core Python
- java - 按类别排序时如何避免并发修改异常?
- ssis - SSIS test, ADO.net connection with SQL authenticated user fails, OLEDB works
- c# - C# MVC 有限阅读器excel
- jenkins - Jenkins SCM 插件,如何获取自上次构建以来每个更新文件的列表?
- javascript - 网页中的多个不同背景
- r - 试图在ggplot中加粗y轴
- r - Cleaning legacy country records in R dataframe
- android - 接口始终为空
- r - Replace column in a list of lists of dataframes with columns in another list of lists of dataframes. R