有人可能是一个很好的来源,其中描述了所有可用的文件操作,如fopen,fread,mkdir等?当我在谷歌搜索Linux文件操作时,大多数页面都会向我解释文件系统层次结构的样子。
答案 0 :(得分:5)
您询问的函数实际上属于几个类别 - 文件流I / O(fopen
,fread
等),低级文件描述符I / O({{1 }},open
等),以及文件系统/目录操作(read
,chown
等。)。
有关文件流I / O功能的概述,请参阅man stdio
。
要搜索Google,请尝试使用“posix file api”而不是“linux file operations”。
您还可以查看GNU C Libary Manual:
答案 1 :(得分:4)
我不确定这是否有帮助,但这直接来自内核源代码:
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);
};
文件系统通常会将所有实现注册到这些回调中。
答案 2 :(得分:1)
是的 - 使用手册页。 man fopen
,man fread
,man mkdir
等将描述这些功能的用法。许多手册页还有一个“另请参见”部分,它将引导您访问相关函数的手册页,有点像原始维基百科。 :)
答案 3 :(得分:1)
在堆栈的不同级别上有几个文件操作API,例如POSIX API,Standard C AP我,Linux VFS API(正如杰里米所说)和FUSE API。所有的API都或多或少地做同样的事情,但细节是非常不同的。
对于普通用户来说,这两个API是最重要的。
关于这个主题的好书是史蒂文斯和拉戈的“Advanced Programming in the UNIX Environment"
答案 4 :(得分:0)
使用man 2 open
和man 2 mkdir
。在这个手册页的底部是相关命令的名称。
或者,如果您搜索此手册页的可浏览版本,则可以尝试here