2016-10-15 3 views
2

임시 파일을에 쓰지 않고 에 쓰고 싶습니다.이 파일은 일반 파일 인 것처럼 다른 프로세스에서 CreateFile을 사용하여 읽을 수 있습니다.

이것이 가능합니까 아니면 디스크에 기록해야합니까?
메모리 파일 만들기

+0

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

+0

@AmericanPatriot 저는 Windows API를 사용하고 있기 때문에 WinAPI로. – man

+0

@JacquesdeHooge'fmemopen'은 Windows에서 사용할 수없는 것 같습니다. – man

답변

0

CreateFile은 파일 경로를 매개 변수로 사용합니다. 다른 프로세스가 파일을 열 수 있도록하려면 해당 파일 위치가 시스템에있는 장치 중 하나에 매핑되어야합니다.

이러한 장치 중 하나는 물리적 디스크에 파일을 쓰지 않고 파일을 만들 수있는 RAM 디스크/장치 (메모리 스왑은 따로 보관) 일 수 있습니다. 하지만이를 위해서는 가상 장치를 설치하고 정품 인증해야합니다.

프로세스간에 메모리를 공유하기 만하면, 예를 들어 shmem implementation을 살펴보십시오.

+1

그 링크는 쓸모가 없습니다. Windows의 공유 메모리는'CreateFileMapping'과'MapViewOfFile'을 사용하여 완성됩니다. – IInspectable

2

일반적으로 CreateFile() (RAM 디스크 접근법을 따르지 않는 한)은 수행 할 수 없지만 대신 CreateFileMapping()MapViewOfFile()을 사용하여 수행 할 수 있습니다. 매핑 객체는 프로세스 경계를 ​​넘어서 공유 될 수 있도록 이름을 할당 할 수 있으며, 여러 프로세스가 필요에 따라 자신의 뷰를 열 수 있습니다.