Во-первых, извините за мой плохой английский.
Я пытаюсь получить содержимое исполняемого файла на Linux. Но есть ошибка.
вместо отображения всего содержимого. Отображается только часть из них
Myfile - это b.out:
quan @ quan-desktop: ~ / quanrocktest / tuan1 $ cat b.out
ELFquan 0 4 4 ($! 44 4 44 4
....
...
4444
так далее...
b.out является файлом ELF
Мой код:
#include <stdio.h>
# include "stdlib.h"
int main () {
FILE *file;
char *buffer;
unsigned int fileLen;
//Open file
file = fopen("/home/quan/quanrocktest/a/b.out", "r");
//Get file length
fseek(file, 0, SEEK_END);
fileLen=ftell(file);
fseek(file, 0, SEEK_SET);
//Allocate memory
buffer=(char *)malloc(fileLen+1);
if (!buffer)
{
fprintf(stderr, "Memory error!");
fclose(file);
return 0;
}
//Read file contents into buffer
fread(buffer, fileLen, 1, file);
fclose(file);
printf("len is %d \n",fileLen);
//Do what ever with buffer
printf("%s",buffer);
free(buffer);
возврат 0;
}
И результат:
quan @ quan-desktop: ~ / quanrocktest / $ g ++ init.c
quan @ quan-desktop: ~ / quanrocktest / a $ ./a.out
len 8256
ELFquan @ quan-desktop: ~ / quanrocktest / a $
a.out просто отобразить
ELFquan
Когда я использую vi или cat, b.out все еще хорошо отображается