完美删除临时文件

笔者曾经写过一个爬虫,里面涉及到一些临时文件的操作。在解析页面时总会有各种各样的异常导致临时文件删除失败。如今对Unix文件系统有了一些更为深入的理解,这个问题也迎刃而解。
Unix文件系统中有个非常重要的概念,i节点。文件系统中的每个目录项都会指向一个i节点,每个i节点中都有一个链接计数,其值是指向该i节点的目录项数。只有当链接计数减少至0时,才可删除文件(也就是释放该文件占用的数据块).另一个条件也会阻止删除文件的内容——只要有进程打开了该文件,其内容也不会删除。
关闭一个文件时,内核首先检查打开该文件的进程个数;如果这个计数达到0,内核再去检查其链接计数;如果计数也是0,那么就删除该文件的内容。
这意味着我们可以在创建一个临时文件的时候就调用unlink函数,程序结束之后(无论是正常还是异常结束)临时文件都会被删除。