linux中ioctl函数集的目的是啥?
Posted
技术标签:
【中文标题】linux中ioctl函数集的目的是啥?【英文标题】:What is the purpose of ioctl set of functions in linux?linux中ioctl函数集的目的是什么? 【发布时间】:2015-03-27 09:43:01 【问题描述】:在 Linux/freeBSD 内核中,每当我们必须为设备制作驱动程序模块时,我们都会在 /dev/ 文件夹中制作一个文件并使用它与其他进程通信。
如果是这样,ioctl 函数集的目的是什么? 无论我们想通过设备驱动程序传达什么信息,都可以从该文件中写入/读取。
谁能解释一下?
我曾尝试在 tldp.org 上阅读有关它的内容,但无法真正理解它。
【问题讨论】:
@JoachimPileborg 你应该回答这个问题 【参考方案1】:ioctl
用于 I/O 控制,以串口为例。您打开串口设备,可以从串口读取,并写入串口,但是您如何设置例如波特率?还是其他控制选项?使用read
或write
是不可能的,因为它们用于从/向串行端口读取和写入数据,为此您需要另一个函数,这就是ioctl
函数的用武之地。
【讨论】:
【参考方案2】:可以为“控制”任务创建另一个设备文件,并在其上使用普通的读/写,而不是 ioctl。这样就完全不需要 ioctl 了。 Plan 9 操作系统就是这样做的。
问题是 - Unix 系统只是以另一种方式做到这一点。他们总是这样做,而且既然它并没有什么问题,而且很多软件都使用 ioctl,为什么还要费心去改变它呢?
【讨论】:
谢谢,几乎没有看到任何地方提到过这个。 'ioctl' 对我来说似乎与读写没有什么不同 - 除了在这种情况下它是元数据。以上是关于linux中ioctl函数集的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章