6
在C,我可以创建一个共享内存对象:如何使用Haskell的mmap库读取共享内存?
int fd = shm_open("/object", O_RDWR | O_CREAT, 0777);
我也可以使用mmap
内存读:
int* addr = mmap(0, sizeof(*addr), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
但我如何访问从哈斯克尔的数据?
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
根据作者[评论](https://hackage.haskell.org/package/mmap-0.5.9/docs/src/System-IO-MMap.html),它无法做到:“ TODO:支持外部给予的HANDLE和FD“。你必须自己添加功能。 – user2407038
好赶@ user2407038,谢谢! – MaiaVictor