Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » mmap

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.12.2009, 04:57 Uhr
~Sne11ius
Gast


Hallo!

ich möchte Daten von einer Datei in eine Andere kopieren und dafür mmap() benutzen. Mein Problem dabei: Wenn ich als flag-Parameter "MAP_SHARED" übergebe, bekomme ich MAP_FAILED zurück mit der Begründung "Invalid argument" in errno.
Das könnte ich ja noch verstehen: habe ich wohl einen ungültigen Parameter übergeben.
Aber: Wenn ich als flag "MAP_PRIVATE" übergebe, nimmt mmap() die restlichen Parameter an. - Nur wird dann natürlich leider keine Änderung auf die Festplatte geschrieben.
Kann mir jemand sagen, wie sich der Unterschied im Verhalten von mmap() erklären lässt? Vielleicht hilft mir das ja dabei, den falschen Parameter zu finden.

Mein Aufruf lautet:


C++:
char* to_buf = reinterpret_cast<char*>(mmap(NULL, size_mod, PROT_WRITE, MAP_SHARED, to_fd, 0));



Vielen Dank & Viele Grüße:

Sne11ius
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.12.2009, 09:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,


Zitat:

1. [EINVAL]
The value of len is zero.
2. [EINVAL]
The addr argument (if MAP_FIXED was specified) or off is not a multiple of the page size as returned by sysconf(), or is considered invalid by the implementation.
3. [EINVAL]
The value of flags is invalid (neither MAP_PRIVATE nor MAP_SHARED is set).



würde wohl davon ausgehen, das Fall 2 eintritt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.12.2009, 10:12 Uhr
~Sne11ius
Gast



Zitat von FloSoft:
Hi,
The addr argument (if MAP_FIXED was specified) or off is not a multiple of the page size as returned by sysconf(), or is considered invalid by the implementation.
...
würde wohl davon ausgehen, das Fall 2 eintritt.


Vielen Dank für die Antwort.
MAP_FIXED benutze ich ja nicht und 0 ist ganz sicher "a multiple of the page". Ich gehe also richtig in der Annahme, dass du den letzten Fall meinst? D.h. dass das bei meiner implementierung einfach nicht vorgesehen ist?

Sne11ius
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.12.2009, 12:27 Uhr
~Sne11ius
Gast


Hat sich wohl erledigt, da es auf verschiedenen anderen Rechnern problemlos funktioniert. Muss wohl irgendwie an meinem OS liegen.

Sne11ius
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.12.2009, 17:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


für deine implementierung ist evtl "0" nicht "a multiple of the page".
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: