我有一个使用Netlink的Linux内核模块,以便与在用户空间中运行的守护程序进程通信。
在开发阶段,我总是像正常进程一样运行守护进程可执行文件(不调用fork()
),一切正常。
截至目前,主要行为的开发已经完成,所以我正在实现一个--daemon
参数,该参数调用fork()
方法(以及setsid()
,如链接{{ 3}})就在继续正常过程之前。
下一步是初始化Netlink套接字后的守护进程调用Linux内核模块,并且这个守护程序正在保存守护进程的PID以便推送消息。
Linux内核守护程序正确接收来自守护程序进程的消息,但无法使用返回errno -111(拒绝连接)的netlink_unicast()
发送消息。
我检查了Linux内核模块收到的PID,它在分叉后与守护进程相同,所以看起来是正确的。
你知道为什么我的守护进程在分叉时不再能够从我的Linux内核模块接收消息(使用recvmsg()
方法)吗?
答案 0 :(得分:0)
@ artless-noise是对的我忘了叫umask(0);