如何确定用户空间进程是否连接到netlink内核模块?

时间:2014-05-28 13:51:36

标签: linux kernel sockets

我目前正在编写一个小的Linux内核模块(> 3.10),它应该通过netlink套接字与用户空间进程通信。 双方接收和发送数据工作正常。 但是,如何在内核模块中找出是否连接了任何用户空间进程?

目前我只是等待进程将数据发送到模块,并保存进程pid以获得答案。 但是如果我的模块应该从内核到用户空间定期发送数据,而没有来自用户空间进程的任何请求呢?是否有可能找出是否有任何插座打开?

我在struct proto中找到了一些有趣的回调指针,但似乎没有使用它们(对于netlink套接字?)。

1 个答案:

答案 0 :(得分:0)

Kernel space <> User space通过内核的netlink套接字进行通信。他们有热插拔[udevmodprob等事件[添加,更改,移除等],当主要状态发生变化时会触发这些事件。

如果您在系统中收听这些事件,您可以进一步挖掘。

如果你有一个udev hotplug,你可以使用下面的命令,或者有相同的旧命令:

  

udevadm monitor