最近在写elf格式文件的解析和装载过程,打开elf文件使用的是file_elf = fopen(path,"r");在将PT_LOAD类型的segment加载到内存时老师不能够读取到我指定长度的空间,即fread((char *)ProHead->p_vaddr, 1 , ProHead->p_filesz,file_elf )的时候,返回的读取到的长度并不是ProHead->p_filesz这个大小,很是折磨人,不知道问题出在哪里。
猜测是应该遇到了结束符\0 所以提前结束读取,改为二进制读取fopen(path,"rb"); 这样肯定就可以读到指定长度了吧?试了下果然好了!! 记录下,给遇到同问题的朋友一个分享,希望能帮助到大家!