虽然 页面管理模块已经是实现好的,但是我在看页面管理模块的时候,有一个地方不太理解,我怀疑是一个bug,想看看你的意见。
在 PF_Manager.cpp 中的 AllocateBlock函数中
if(bf_manager.frame[min].bDirty==true){ offset=(bf_manager.frame[min].page.pageNum)*sizeof(Page); if(_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)==offset-1) return PF_FILEERR; if(_write(bf_manager.frame[min].fileDesc,&(bf_manager.frame[min].page),sizeof(Page))!=sizeof(Page)) return PF_FILEERR; }
我不理解 为什么第一个if语句中 _lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)==offset-1 才 return PF_FILEERR。 我觉的 应该是不等于 Offset 就应该 return PF_FILEERR
所以应该写成
if((_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)==offset)-1)
或者
if(_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)!=offset)
虽然 页面管理模块已经是实现好的,但是我在看页面管理模块的时候,有一个地方不太理解,我怀疑是一个bug,想看看你的意见。
在 PF_Manager.cpp 中的 AllocateBlock函数中
if(bf_manager.frame[min].bDirty==true){ offset=(bf_manager.frame[min].page.pageNum)*sizeof(Page); if(_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)==offset-1) return PF_FILEERR; if(_write(bf_manager.frame[min].fileDesc,&(bf_manager.frame[min].page),sizeof(Page))!=sizeof(Page)) return PF_FILEERR; }我不理解 为什么第一个if语句中
_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)==offset-1才 return PF_FILEERR。 我觉的 应该是不等于 Offset 就应该 return PF_FILEERR所以应该写成
if((_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)==offset)-1)或者
if(_lseek(bf_manager.frame[min].fileDesc,offset,SEEK_SET)!=offset)