c语言 - 为什么我们仍然需要 read() 和 write() 系统调用,为什么我们不能用 ioctl 系统调用替换它们?



在linux中,对于所有的读写操作,我们使用read((和write((系统调用。我们也可以用ioctl((系统调用来做同样的事情,那么为什么我们仍然需要read((和write((的系统调用呢?

使用read((和write((系统调用而不是ioctl((时,是否有任何安全性或快速性能?

如果我们删除了read((和write((,那么系统将不再符合posix(许多现有软件将崩溃(。同样,如果我们完全依赖linux ioctl系统调用,那么我们的代码就不再可移植到其他系统。

理论上所有都可以使用ioctl()完成。但是ioctl()的目的是提供一种执行各种设备特定操作的方法。当有大多数设备实现的操作时,最好使用更具体的功能。这允许编译器执行参数类型检查。像ioctl()这样的通用函数无法检查您是否提供了适合该操作的参数。

相关内容

最新更新