I2C 文件描述符上的 I2C 总线 writable/readable 标志

I2C Bus writable/readable flags on I2C file descriptor

我想通过 Raspbian 上的 I2C 总线将多个温度计连接到 Raspberry 板上,使用带有包含 pselect() 的事件循环的 C++ 应用程序。从应用程序打开默认 i2c-0 文件描述符(并使用 linux/i2c-dev.h 接口),我将文件描述符添加到 pselect()fd_set *readfdsfd_set *writefds.我想知道这个文件描述符是否会变成 FD_WRITEABLEFD_READABLE ?由于I2C是master/slave设置,温度计应该是不可能发起通信的,因为读写操作都是由userland的应用程序发起的,所以我想FD_READABLE应该不在问题,我说的对吗?

我还没有发现任何有关将 I2C 与 pselect 一起使用的信息,what does readable/writable mean in a socket file descriptor? And why regular files don't bother with that? 是我偶然发现的最接近的答案:“可读意味着套接字接收缓冲区中存在数据或 FIN。 可写意味着套接字发送缓冲区中有 space 可用。”I2C 设备是否已缓冲?我可以依赖这种机制吗?

非常感谢!

所以有这个:

The pselect() and select() functions shall support regular files, terminal and pseudo-terminal devices, STREAMS-based files, FIFOs, pipes, and sockets. The behavior of pselect() and select() on file descriptors that refer to other types of file is unspecified.

i2c-0是字符设备文件类型:https://www.kernel.org/doc/Documentation/i2c/dev-interface

pselect() 真的不能保证该文件的任何内容。所以,不,你不能依赖它。