code:closef - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- "释放" 指定 struct file 结构 fp
- 若fp是管道,做相应操作
- 若释放的是fp的最后一个引用,则释放fp对应inode
6634
6635 /*
6636 * Internal form of close.
6637 * Decrement reference count on
6638 * file structure and call closei
6639 * on last closef.
6640 * Also make sure the pipe protocol
6641 * does not constipate.
6642 */
6643 closef(fp)
6644 int *fp;
6645 {
6646 register *rfp, *ip;
6647
6648 rfp = fp;
6649 if(rfp->f_flag&FPIPE) {
6651 ip->i_mode =& ~(IREAD|IWRITE);
6654 }
6655 if(rfp->f_count <= 1)
- 若fp是管道文件,ip是fp对应的inode
- 释放ip的读写标志
- 唤醒 等待读/写 ip的进程
6656 closei(rfp->f_inode, rfp->f_flag&FWRITE);
6657 rfp->f_count--;
6658 }
6659 /* ------------------------- */