创建UNIX中的“特殊字符”文件

5

假设我想创建一个类似于 /dev/zero 的文件 /dev/seven,每当从中读取时它都会产生字符 '7'。我应该如何实现这样的功能?我需要修改内核吗?

3个回答

4

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

对于Linux,我建议您阅读Jonathan Corbet、Alessandro Rubini和Greg Kroah-Hartman的Linux设备驱动程序。(第3章讲述了字符驱动程序,但请至少先阅读前两章。)


好的。所以我需要内核源代码和一个以“#include <linux/kernel.h>”开头的文件,对吗? - koschei
你需要很多东西,我在帖子中编辑了一个链接,是一个非常好的资源。顺便说一句,如果你的问题只涉及 Linux,请重新标记它(用 Linux 替换 Unix)。 - Mat
然而,也有可能为此类问题创建一个用户模式驱动程序 - Keith

1

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

总共需要大约五行Shell脚本。


因为某些原因,似乎制作一个用户程序,只需将“while(true); do printf 7; done”输入到FIFO中是个坏主意。我的直觉错了吗?它真的不会用7洪水般地占满我的内存,并且只有在读取事件发生时才产生它们吗? - koschei
1
@koschei:我认为它在没有读取器连接的情况下什么也不会做,然后填充FIFO写缓冲区,然后阻塞直到读取器在FIFO中腾出一些空间。虽然,一次将一千个字符printf到FIFO中会更有效率。 - Ben Voigt

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接