code:close - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Source

  • 系统调用,用以关闭一个file结构
  • 从用户态传入1个参数:
    • fildes:通过R0传入,是一个文件描述号

5842

5843 /*

5844  * close system call

5845  */

5846 close()

5847 {

5848     register *fp;

5849

5850     fp = getf(u.u_ar0[R0]);

  • 得到传入的文件描述号对应的file结构
5851     if(fp == NULL)

5852          return;

  • 若找不到对应file结构,直接返回
5853     u.u_ofile[u.u_ar0[R0]] = NULL;

5854     closef(fp);

  • 对于找到的file结构
    • 清除其在进程打开文件表中的对应项
    • 调用closef释放该file结构
5855 }

5856 /* ------------------------- */

Ref

Param

(close = 6.)
(file descriptor in r0)
sys close
⚠️ **GitHub.com Fallback** ⚠️