mmap will nicht so recht

jkallup

Erfahrenes Mitglied
Hallo,

warum funktioniert dieser code nicht?
es soll eine datei in den speicher geladen und ausgeführt werden.
danke für tipps


Code:
typedef int (*myproc1)(void*);
typedef int (*myproc2)(int);

void ExecMapFile(void (*ptr)(void))
{
  int fd;
  struct stat attr;
  myproc2 callback;
 
  if ((fd = open("z.bin",O_RDONLY)) < 0)
  {
      fprintf(stderr,"%s : Konnte Eingabedatei nicht öffnen\n",strerror(errno));
  }

  if (fstat(fd, &attr) == -1)
  {
      fprintf(stderr,"Fehler bei fstat.......\n");
  }

  lseek(fd,0,0);

  printf("0x%x\n",ptr);


  callback = mmap(0x401015, attr.st_size, PROT_READ | PROT_EXEC, MAP_SHARED, fd, 0);
  close(fd);

  printf("0x%x\n",callback);
  callback((int)callback);
}
 
Hallo,

Welches Betriebssystem verwendest du und welchen Compiler?

Ich vermute mal, bei deiner Datei handelt es sich um eine Anwendung.

Um eine Anwendung aus einem Programm auszuführen, verwende ich meist system("...").

Was dieses mmap genau macht, weiß ich leider auch nicht.

mfg. posi90
 
Auch wenn ich das Problem nicht lösen kann, verweise ich auf meine Signatur.

Bitte beschreibe genau was nicht geht, stürzt es ab, startet es erst gar nicht, erhälst du vielleicht sogar eine Fehlermeldung?
 
Zurück