Linux内核中的netlink套接字与用户区的轮询有何不同?

时间:2013-05-24 03:23:55

标签: linux linux-kernel embedded-linux netlink

我对内核应用程序交互上下文中netlink套接字的功能存在疑问。正如我所读到的,netlink套接字用于从内核到应用程序的基于事件的通知。这样做的好处是不需要应用程序进行轮询。

但是在netlink socket的情况下,它也将最终轮询以检查是否已经从内核发送了一些数据。所以我的问题是,netlink socket的这个功能与文件描述的轮询有什么不同? 我提到this但是它告诉我们如何使用netlink,而不是netlink socket和polling之间的区别。

1 个答案:

答案 0 :(得分:1)

对于应用程序,netlink套接字和其他设备文件的行为大致相似(即调用pollread)。

如果您需要netlink的一项功能(例如多播)或者您的驱动程序变得更容易实现(内核端API更类似于套接字并具有内置缓冲),您将使用netlink,因为您不喜欢你必须自己编写文件操作。