编程实践手册2 - DDL-Killer/The-road-of-Linxu-Group2024 GitHub Wiki

文件读写

注销过程:如何工作

  1. 打开文件utmp
  2. 从utmp中找到包含你所在终端的登录记录
  3. 对当前记录做修改
  4. 关闭文件

详细步骤

  1. 打开文件
  • fd = open(UTMP_FILE,O_RDWR);
  1. 从utmp中找到包含你所在终端的登录记录
  • 用while循环中读取一条utmp记录,将它的ut_line字段跟你的终端名称作比较,如果相等则调用修改函数
  • while(read(fd,rec,utmpelen) == utmplen)
  • if(strcmp(rec.ut_line,myline) == 0){revise_entry();}
  1. 对当前记录进行修改
  • 负责注销的程序修改当前记录,再把它写回到文件utmp中
  • 文件操作中,要改变一个文件的当前读/写位置,需要使用系统调用:lseek
  1. 关闭文件
  • 调用close(fd)

改变文件的当前位置

  • lseek
    图片
  • 偏移量可以是负的