为什么TIOCSTI采用指向char的指针而不是char?

问题描述 投票:0回答:1

当它只想要 1 个字节时,为什么呢

ioctl(int fd, TIOCSTI, const char *argp)

?不会

ioctl(int fd, TIOCSTI, const char argp)

更有意义吗?并且更快? (它不需要跟随指针,调用者也不需要创建一个有效的指针)

为什么选择指向字符的指针而不是字符?

c linux ioctl
1个回答
0
投票

ioctl
做了很多事情,但在所有情况下,它都会将某种数据块传递给依赖于文件描述符的驱动程序,或从驱动程序返回数据块。

根据命令的不同,数据块完全不同。虽然

TIOCSTI
只需要一个字符,但还有许多其他
ioctl
命令,例如
TCSETS
需要一个
const struct termios*
。所以他们设计了它,所以 every
ioctl
命令使用指针。

请注意,在 Linux 上,命令代码本身设置数据块的大小以及它是 get 命令还是 set 命令。

TIOCSTI
计算为一个数字,该数字中的一些位告诉
ioctl
函数它应该向驱动程序发送一个字节的数据。

© www.soinside.com 2019 - 2024. All rights reserved.