【问题标题】:Create UNIX "special character" file创建 UNIX“特殊字符”文件
【发布时间】:2011-08-31 15:55:55
【问题描述】:

假设我想按照 /dev/zero 的精神创建一个文件 /dev/seven,它在读取时生成字符“7”。我应该怎么做这样的事情?我需要修改内核吗?

【问题讨论】:

    标签: linux character udev


    【解决方案1】:

    是的,您需要为该特殊字符设备创建驱动程序。

    对于 linux,我建议您阅读 Jonathan Corbet、Alessandro Rubini 和 Greg Kroah-Hartman 撰写的 Linux Device Drivers。 (第 3 章讨论 char 驱动程序,但请至少阅读前两章。)

    【讨论】:

    • 好的。所以我需要内核源和一个以“#include ”等开头的文件?
    • 你需要很多东西,我编辑了我的帖子,并附上了一个很好的资源链接。顺便说一句,如果您的问题只是关于 linux,请重新标记它(将 unix 替换为 linux)。
    • 但是,也有可能使用user-mode driver 来处理类似的事情。
    【解决方案2】:

    不需要设备驱动程序,fifo 特殊文件加上生成7 流的用户程序完全能够提供此行为。

    你大概需要一个五行的 shell 脚本,总而言之。

    【讨论】:

    • 出于某种原因,将用户程序“while (true); do printf 7; done” 变成一个先进先出似乎是个坏主意。我的直觉有问题吗?它真的不会用 7 来淹没我的记忆,并且只在读取时才产生它们吗?
    • @koschei:我认为在读取器连接之前它什么都不做,然后填充 fifo 写入缓冲区,然后阻塞直到读取器在 fifo 中腾出一些空间。虽然,一次将一千个字符打印到 fifo 中会更有效率。
    【解决方案3】:

    这里有一个为 Linux 创建设备驱动程序的简短示例,它可能有助于您入门:

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 2019-06-14
      • 2012-08-03
      • 1970-01-01
      相关资源
      最近更新 更多