当它只想要 1 个字节时,为什么呢
ioctl(int fd, TIOCSTI, const char *argp)
?不会
ioctl(int fd, TIOCSTI, const char argp)
更有意义吗?并且更快? (它不需要跟随指针,调用者也不需要创建一个有效的指针)
为什么选择指向字符的指针而不是字符?
ioctl
做了很多事情,但在所有情况下,它都会将某种数据块传递给依赖于文件描述符的驱动程序,或从驱动程序返回数据块。
根据命令的不同,数据块完全不同。虽然
TIOCSTI
只需要一个字符,但还有许多其他 ioctl
命令,例如 TCSETS
需要一个 const struct termios*
。所以他们设计了它,所以 every ioctl
命令使用指针。
请注意,在 Linux 上,命令代码本身设置数据块的大小以及它是 get 命令还是 set 命令。
TIOCSTI
计算为一个数字,该数字中的一些位告诉 ioctl
函数它应该向驱动程序发送一个字节的数据。