【问题标题】:mmap /dev/null for writingmmap /dev/null 用于写入
【发布时间】:2014-08-05 06:12:40
【问题描述】:

是否有可能将大量地址空间映射到 /dev/null,这样所有写入它的数据都会被丢弃?

我需要执行磁盘/网络读取但我不需要读取数据(我知道,这听起来有点奇怪)并且有很多同时读取请求,所以我不想浪费“真实”对此的记忆。

【问题讨论】:

  • mmap with /dev/zero的可能重复
  • @DoxyLover 不,链接的问题是关于读取 /dev/zero,而这个问题是关于在不使用硬件内存的情况下写入它。
  • 写入 /dev/null 的数据通常用于存储在 Signetics 25000 系列 9C46XN WOM 中(有关详细信息,请参阅 google.com/…")。
  • 我不明白这个问题。如果您不需要数据,那么为什么要在任何地方写它呢?如果您担心多个读取缓冲区使用的内存,那么只需使用一个缓冲区。如果您不关心数据,如果多个读取源不断写入缓冲区,因为您无论如何都不打算使用它,您关心什么?
  • @Duck 在所有 CPU 内核上使用一个缓冲区无法扩展,因为它会导致来自不同内核的多次写入。

标签: c linux mmap dev-null


【解决方案1】:

如果它可以帮助任何尝试映射 /dev/null 的人:这实际上是不可能的,并且会返回错误 ENODEV(没有这样的设备),这意味着(在这种情况下)这个文件不能被映射。

这是因为这是一个特殊文件,没有可用的 mmap 操作。详情请见http://lxr.free-electrons.com/source/drivers/char/mem.c#L768。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-26
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多