在守护进程模式下,netlink_unicast返回errno -111(连接被拒绝)

问题描述:

我有一个使用Netlink的Linux内核模块,以便与在用户空间中运行的守护进程进行通信。在守护进程模式下,netlink_unicast返回errno -111(连接被拒绝)

在开发阶段,我总是像正常进程一样运行守护进程可执行文件(没有调用fork()),并且一切正常。主要表现现在的发展

作为结束,所以我实现一个​​参数调用该方法fork()(也setsid()为链接http://www.thegeekstuff.com/2012/02/c-daemon-process/描述)之前继续正常的过程。

下一步是初始化Netlink套接字后的守护进程调用Linux内核模块,并且这个守护进程保存守护进程的PID以推送消息。 Linux内核守护进程正确接收来自守护进程的消息,但无法使用返回errno -111(连接被拒绝)的netlink_unicast()发送消息。

我检查了Linux内核模块接收到的PID,它与fork后的守护进程是一样的,所以看起来正确。

您是否知道为什么我的守护进程在分叉时无法从我的Linux内核模块接收消息(使用方法recvmsg())?

+0

他们为什么叫'umask(0);'?我想这是一个权限问题。为什么不使用[守护进程](http://man7.org/linux/man-pages/man3/daemon.3.html)而不是这个* geekstuff *链接? – 2013-04-08 18:24:34

+1

是啊为什么不呢......我刚刚找到了一个看起来不错的链接,但如果守护进程解决了这个问题,那对我来说很好!谢谢,我会尝试并让你知道 – ZedTuX 2013-04-08 21:35:08

@ artless-noise was right我忘了叫umask(0);