文件 函数

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

当运行一个新程序时,系统为其打开三个文件描述符,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节点(打开的同一个文件)

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

你可能感兴趣的:(文件 函数)