我想读取目录中的文件,检查它们是否是ELF类型并打印这些文件的10个第一个字节.问题是fread(buffer,1,4,f1);符合的.在第一次循环迭代中,一切正常,但在第二次迭代时会弹出这个错误:"segmentation Fault(core dumped)".有谁知道为什么在这种情况下出现这个错误?我知道有很多与此问题相关的问题,但我找不到答案
while ((pDirent = readdir(pDir))!= NULL){
void *dl;
dl = dlopen( pDirent->d_name, RTLD_LAZY | RTLD_LOCAL );
if(dl != NULL){
printf("Failo vardas %s tai yra dinamine biblioteka \n",pDirent->d_name);
}else{
char buffer[4];
FILE *f1;
f1 = fopen(pDirent->d_name, "r" );
fread(buffer,1,4,f1);
if(buffer[0] == 0x7f && buffer[1] == 'E' && buffer[2] == 'L' && buffer[3] =='F'){
printf("%s sis failas nera dinamine biblioteka, tai yra ELF failas \n",pDirent->d_name);
}
fclose(f1);
FILE *f2;
f2 = fopen(pDirent->d_name, "r" );
char buf[10];
fread(buf,1,10,f2);
printf("%s file 10 baitu : %s \n",pDirent->d_name,buf);
fclose(f2);
}
dlclose( dl );
Run Code Online (Sandbox Code Playgroud)
}