我想讀取目錄中的文件,檢查它們是否爲ELF類型並打印這些文件的第10個字節。問題出在fread(buffer,1,4,f1);
一行。在第一次while循環迭代中一切正常,但在第二次迭代時會彈出這個錯誤:「segmentation Fault(core dumped)」。有人知道爲什麼這個錯誤出現在這種情況下?我知道有很多關於這個問題的問題,但我無法找到答案分段錯誤(核心轉儲)fread函數
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);
}
檢查'fopen'和fread'的返回值。 –
pDir從哪裏來?如果您正在查看除當前目錄之外的任何目錄,則需要將目錄名(和斜槓)預先添加到文件名以便能夠打開它。 –
我不得不檢查f1和f2是否爲NULL,並且錯誤消失 –