2016-10-15 56 views
2

我想在內存中創建一個臨時文件,沒有它寫入磁盤,可以從其他進程使用CreateFile打開,就像它是一個普通文件一樣。

這是可能的還是我必須將其寫入磁盤?創建一個內存文件

+0

http://stackoverflow.com/questions/5135854/make-a-file-pointer-read-write-to-an-in-memory-location –

+0

@AmericanPatriot由於我使用Windows API,也稱爲作爲WinAPI。 – man

+0

@JacquesdeHooge'fmemopen'似乎在Windows上不可用。 – man

回答

0

CreateFile將文件路徑作爲參數。對於其他進程能夠打開它,該文件位置應映射到系統中現有的設備之一。

其中一個這樣的設備可以是RAM磁盤/設備,您可以在其中創建文件而無需將它們寫入物理磁盤(內存交換放在一邊)。但是這需要安裝和激活這樣的(虛擬)設備。

如果你只是需要在進程之間共享內存,那麼看看例如shmem implementation

+1

該鏈接是無用的。 Windows上的共享內存使用'CreateFileMapping'和'MapViewOfFile'完成。 – IInspectable

2

您所要求的通常不能用CreateFile()(除非您使用RAMdisk方法)完成,但可以使用CreateFileMapping()MapViewOfFile()代替。可以爲映射對象分配一個名稱,以便跨進程邊界共享該映射對象,然後可以根據需要將多個進程打開自己的視圖。