我目前正在编写一个小的Linux内核模块(> 3.10),它应该通过netlink套接字与用户空间进程通信。 双方接收和发送数据工作正常。 但是,如何在内核模块中找出是否连接了任何用户空间进程?
目前我只是等待进程将数据发送到模块,并保存进程pid以获得答案。 但是如果我的模块应该从内核到用户空间定期发送数据,而没有来自用户空间进程的任何请求呢?是否有可能找出是否有任何插座打开?
我在struct proto
中找到了一些有趣的回调指针,但似乎没有使用它们(对于netlink套接字?)。
答案 0 :(得分:0)
Kernel space <> User space
通过内核的netlink套接字进行通信。他们有热插拔[udev
,modprob
等事件[添加,更改,移除等],当主要状态发生变化时会触发这些事件。
如果您在系统中收听这些事件,您可以进一步挖掘。
如果你有一个udev hotplug,你可以使用下面的命令,或者有相同的旧命令:
udevadm monitor