有人可能是一个很好的来源,所有可用的文件操作,如fopen,fread,mkdir等被描述? 当我对Linux文件操作进行google化时,大多数页面都会向我介绍文件系统层次结构的外观。
你所提到的函数实际上属于几个类别 – 文件流I / O( fopen
, fread
等),较低级别的文件描述符I / O( open
, read
等)以及文件系统/目录操作chown
, mkdir
等)。
有关文件流I / O功能的概述,请参阅man stdio
。
要搜索Google,请尝试使用“posix file api”而不是“linux文件操作”。
您也可以检查GNU C Libary手册 :
我不确定这是否有帮助,但这是直接从内核源:
struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); };
文件系统通常将所有的实现注册到这些回调函数中。
是的 – 使用手册页。 man fopen
, man fread
, man mkdir
等,将会描述这些功能的用法。 许多手册页也有一个“另请参阅”部分,将引导您到相关功能的手册页,有点像一个原始的维基百科。 🙂
在堆栈的不同级别上有几个文件操作API,例如POSIX API, Standard C AP I, Linux VFS API (如Jeremy提到的)和FUSE API 。 所有的API或多或少都是一样的,但细节却大不相同。
这两个API对于普通用户来说是最重要的。
关于该主题的一本好书是Stevens和Rago的“UNIX环境下的高级编程”
使用man 2 open
和man 2 mkdir
。 在这个手册页的底部是相关命令的名字。
或者,如果您搜索此手册页的可浏览版本,则可以在此处尝试