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