使用fork后的结构如下。同样是没有创建新的file object,因此当对parent process中的fd1进行文件指针的移动时(如读写),child process中的fd1也会受影响。也即是说opened files list不是进程的一部分,因此不会被复制。Opened files list应该是一个全局性的资源链表,进程维护的是一个指针列表fd table,所以被复制的只是指针列表fd table,而不是opened files list。
函数名 | 作用对象 | 说明 |
creat | dentry, inode | 创建文件时会创建新的dentry与inode |
open | file object | 如果文件不存在,且有O_CREAT参数,则会先调用creat |
close | file object | 删除file object,但不会删除文件。 |
state/lstate | inode | 读取inode的内容。如果目标是symbolic link,stat会读取symbolic link指向的内容;lstat则会读取symbolic link文件本身。 |
chmod | file object | 改变file object中的f_mode |
chown/lchown | file object | 改变file object中的f_uid与f_gid |
truncate | inode | 改变文件长度。 |
read | file object | 读文件会改变file object中的f_pos |
write | file object,inode | 写文件改变file object中的f_pos的同时也会改变文件内容与更新修改时间。 |
dup | file object | 建立一个新的file descriptor,指向同一个file object项 |
seek/lseek | file object | 改变file object中的f_pos |
link | dentry | 创建新的dentry项,指向同一个inode节点。 |
unlink | dentry | 删除一个dentry项。如果该dentry指向的inode节点没有被其他dentry项使用,则删除inode节点与磁盘文件。 |
rename | dentry | 修改dentry相中的d_name |
readlink | ———– | read无法读取symbolic link 文件的内容,需要使用readlink读取 |
symlink | dentry, inode | 作用与creat类似,但创建的文件属性为symbolic link。 |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |