首页 > 解决方案 > 为什么 ioctl 在没有连接设备的情况下返回 0?

问题描述

我有一个带有运动传感器的树莓派。当我运行 ioctl() 调用时,无论是否连接了运动传感器,它总是返回 0?

ioctl(fd,I2C_SLAVE,_DEVICE_Addr)

标签: clinuxraspberry-piembedded-linuxi2c

解决方案


这是预期的行为。I2C_SLAVEioctl 不检查设备是否存在。它根本不在 I2C 总线上进行通信。它只是做一些检查以了解该地址是否已被使用,然后保存客户端地址以供后续调用。

不幸的是,这没有记录,但您可以在代码中阅读:https ://elixir.bootlin.com/linux/v5.8/source/drivers/i2c/i2c-dev.c#L401


推荐阅读