我非常了解 CAN 协议的工作原理——当两个节点尝试同时使用网络时,较低的 id 可以帧获得优先权,而另一个节点检测到这一点并停止。
使用 socketcan 时,这似乎被抽象掉了——我们像任何文件描述符一样简单地写入和读取。我可能误解了一些东西,但我已经浏览了大部分文档(http://lxr.free-electrons.com/source/Documentation/networking/can.txt),我认为它的描述并没有明确。
write() 会阻塞直到我们的帧是最低 id 帧,还是 socket 可以缓冲帧直到网络准备好?如果是这样,当这种情况发生时是否通知用户或者我们是否为此使用环回?