在守护进程模式下,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()
)?
答
@ artless-noise was right我忘了叫umask(0);
他们为什么叫'umask(0);'?我想这是一个权限问题。为什么不使用[守护进程](http://man7.org/linux/man-pages/man3/daemon.3.html)而不是这个* geekstuff *链接? – 2013-04-08 18:24:34
是啊为什么不呢......我刚刚找到了一个看起来不错的链接,但如果守护进程解决了这个问题,那对我来说很好!谢谢,我会尝试并让你知道 – ZedTuX 2013-04-08 21:35:08