Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [?] mappare file in memoria in linux

    ciao a tutti,
    sto sviluppando un'applicazione che deve girare sia sotto windows sia sotto linux.
    Ho la necessità di mappare un file con un nome scelto a run-time in memoria. In realtà non si tratta di un file esistente ma di un area di memoria che può essere condivisa fra processi ma che non si riferisce a nessun file.
    in windows uso le primitive CreateFileMapping e MapViewOfFile nel seguente modo:

    HANDLE hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_R EADWRITE,0,5242880,map);

    void *pBuf = MapViewOfFile(hMapFile,FILE_MAP_WRITE,0,0,0);

    quindi creo un area di memoria mappata (ovvero condivisibile fra processi con un nome contenuto nella variabile map)

    come faccio a fare la stessa cosa in linux?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se non sbaglio devi utilizzare la

    mmap

    ... ma consulta man per maggiori dettagli ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    si probabilmente devo usare la mmap(). la mmap specificando MAP_ANONYMOUS mappa una regione di memoria che in realtà non corrisponde a nessun file, e fin qui tutto ok. ma non permette di specificare un nome per tale regione, e visto che io ho più processi che devono mappare regioni "chiamate" diversamente credo si rischierebbe un'inconsistenza dei dati che ci vado a memorizzare.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se non vuoi farlo da te, puoi usare Boost.

    http://www.boost.org/doc/libs/1_35_0...es.mapped_file

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.