c - 为什么我们还需要 read() 和 write() 系统调用,为什么我们不能用 ioctl 系统调用来代替它们?

标签 c linux io

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

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

最佳答案

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

关于c - 为什么我们还需要 read() 和 write() 系统调用,为什么我们不能用 ioctl 系统调用来代替它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352877/

相关文章:

c - SDL2 会自动创建线程吗?

android - 如何为 Android 操作系统移植一些 linux 命令?

c++ - 检查输出顺序是否正确

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

c - mingw 到 cygwin

c - 捕获 Opt 值时出现错误

char * 到字符串文字?

linux - 使用linux shell脚本使用sed替换 "\"

Linux:如何删除文件夹中除具有特定名称的文件外的所有文件?

java - 套接字未从服务器接收或发送消息