linux中ioctl函数集的用途是什么?

linux中ioctl函数集的用途是什么?,c,linux,kernel,freebsd,ioctl,C,Linux,Kernel,Freebsd,Ioctl,在Linux/freeBSD内核中,每当我们需要为设备创建驱动程序模块时,我们都会在/dev/文件夹中创建一个文件,并使用它与其他进程通信 如果是这样,ioctl函数集的用途是什么? 我们希望通过设备驱动程序传递的任何信息都可以写入/读取此文件 谁能解释一下吗 我试着在tldp.org上读到这方面的内容,但无法真正理解 ioctl用于I/O控制,以串行端口为例。您打开串行端口设备,可以从串行端口读取数据,也可以向串行端口写入数据,但如何设置波特率?还是其他控制选项?不可能使用读取或写入,因为它们

在Linux/freeBSD内核中,每当我们需要为设备创建驱动程序模块时,我们都会在/dev/文件夹中创建一个文件,并使用它与其他进程通信

如果是这样,ioctl函数集的用途是什么? 我们希望通过设备驱动程序传递的任何信息都可以写入/读取此文件

谁能解释一下吗


我试着在tldp.org上读到这方面的内容,但无法真正理解

ioctl
用于I/O控制,以串行端口为例。您打开串行端口设备,可以从串行端口读取数据,也可以向串行端口写入数据,但如何设置波特率?还是其他控制选项?不可能使用
读取
写入
,因为它们用于从串行端口读取和写入数据,因此需要另一个函数,这就是
ioctl
函数的作用。

可以为“控制”任务创建另一个设备文件,并对其使用普通读取/写入,而不是ioctl。这样就根本不需要ioctl了。Plan9操作系统就是这样做的


事情是这样的——Unix系统只是用另一种方式来做而已。他们总是这样做,既然它没有什么真正的问题,而且很多软件都使用ioctl,为什么还要费心修改它呢?

@JoachimPileborg你应该回答这个问题谢谢,几乎没有人提到过这一点。”“ioctl”与读写对我来说似乎没有什么不同,只是在本例中它是元数据。