linuxC学习

变量特性:①地址(左值)②内容(右值)

linux 中文件及文件描述符

linux 中的文件主要分为 4 种:普通文件、目录文件、链接文件及设备文件。

内核如何区分和引用特定的文件呢?这里用到了一个重要的概念——文件描述符。

  对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。

底层文件I/O操作

  open() 函数用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。

  read() 函数用于将从指定的文件描述中读出的数据放到缓存区中,并返回实际读入的字节数。 若返回 0,表示没有数据可读,即已达到文件尾。读操作从文件的当前指针位置开始。当从终端设备文件中读出数据时,通常一次最多读一行。

  close() 函数用于关闭一个被打开的文件。当一个进程终止时,所有被它打开的文件都由内核自动关闭,很多程序都使用这一功能而不显示地关闭一个文件。

  write() 函数用于将从指定的文件描述符中读出的数据放到缓存区中,并返回实际读入的字节数。若返回 0,则表示没有数据可读,即已达到文件尾。读操作从文件的当前指针位置开始。当从终端设备文件中读出数据时,通常一次最多读一行。

  lseek() 函数用于在指定的文件描述符中将文件指针定位到相应的益。它只能用在可定位(可随机访问)文件操作中。管道、套接字和大部分字符设备文件是不可定位。所以在这此文件的操作中无法用 lseek() 调用。

原文地址:https://www.cnblogs.com/tkid/p/3803331.html