Na C, można utworzyć obiekt udostępniony z pamięci:Jak odczytać pamięć współdzieloną za pomocą biblioteki mmap Haskella?
int fd = shm_open("/object", O_RDWR | O_CREAT, 0777);
mogę również odczytać z tej pamięci z wykorzystaniem mmap
:
int* addr = mmap(0, sizeof(*addr), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
Ale w jaki sposób mogę uzyskać dostęp do zgromadzonych danych z Haskell?
import System.Posix.SharedMem
import System.IO.MMap
main = do
fd <- shmOpen "/bolts" (ShmOpenFlags False False False False) 0777
-- Obviously doesn't make sense, mmapFileByteString
-- requires a file path that I don't have!
addr <- mmapFileByteString "/bolts" Nothing
print addr
Nie może tego zrobić, według autorów [comments] (https://hackage.haskell.org/package/mmap-0.5.9/docs/src/System-IO-MMap.html): " TODO: obsługuje zewnętrznie dane UCHWYTY i FD ". Musisz sam dodać tę funkcję. – user2407038
Dobry połów @ user2407038, dziękuję! – MaiaVictor