在linux中,对于所有读取和写入操作,我们使用read()和write()系统调用。我们也可以使用ioctl()系统调用来做同样的事情,那为什么我们仍然需要read()和write()系统调用?
使用read()和write()系统调用而不是ioctl()时是否具有安全性或快速性能?
答案 0 :(得分:2)
理论上,一切可以使用ioctl()
完成。但是ioctl()
的目的是提供一种执行各种特定于设备的操作的方法。当大多数设备执行某些操作时,最好使用更具体的功能。这允许编译器执行参数类型检查。像ioctl()
这样的通用函数无法检查您是否已提供适合该操作的参数。
答案 1 :(得分:1)
如果我们删除了read()和write(),那么该系统将不再与posix兼容(并且很多现有软件都会损坏)。同样,如果我们仅依靠linux ioctl系统调用,那么我们的代码将不再可移植到其他系统。