文件 函数

所有打开的文件通过文件描述符引用(非负整数)

当运行一个新程序时,系统为其打开三个文件描述符,stdin(0)、stdout(1)、stderr(2)。

函数

在unix中提供了

int open(path, flag)  # 返回一个文件描述符
# python
os.open(file, flags[, mode])

int close(fd)
# python
os.close(fd)

off_t lseek(int fd, off_t offset, int whence)
# python
os.lseek(fd, pos, how)

ssize_t read(int fd, void* buf, ssize_t nbytes)
# python
os.read(fd, n)
os.write(fd, str)

缓冲区

unix文件

每个进程的文件描述符表

表中的每一项为:文件描述符+指向文件表项目的指针

内核为所有打开的文件的维持一张文件表

表中的每一项为:文件状态+文件偏移量+指向该文件v节点的指针

v节点

每个打开的文件都有一个v节点,包含了:文件类型+各种函数+i节点,i节点中包含了文件的所有者、文件长度、指向磁盘上所在位置的指针等。

v节点的目的是对多文件系统提供支持,它是与文件系统无关的

两个进程

两个进程打开同一个文件,它们各自有一个文件描述符表,内核为它们各自维持一张文件表,这些文件表项目中的v节点指针指向同一个v节点(打开的同一个文件)

这样,每个进程有它自己的文件偏移量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容