使用read()和write()系统调用来访问mmapped()内存

时间:2014-06-22 10:22:49

标签: c linux mmap

我想问一下是否可以仅使用read()和write()等系统调用来实现mread()函数。我知道标准的C库函数,如fread()和fwrite()使用一种缓冲区来读取。我想做同样的事情,但这次我想从缓冲区读取()和write()到内存映射区域,反之亦然。 例如,我的mread()想要从内存映射中读取并存储到缓冲区中。创建一个新的fd只是为了将它用作我的TEMPORARY缓冲区是否有意义。然后我使用read()从内存映射区域读入fd ..然后使用write()将fd中的内容存储到我的实际buff中。
我希望我很清楚:) ..谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

  

我希望我很清楚

不幸的是,不是很好。但听起来你想使用pipe系统调用。它打开两个fds。无论写入端写入什么都可以在读取端读取。如果你在一个线程中完成所有这些操作,你必须要小心,因为你可能用完了缓冲区空间,然后读/写调用将无限期地挂起。

相关问题