我有一个使用Netlink的Linux内核模块,以便与运行在用户空间中的守护进程通信。
在开发阶段,我总是像正常进程一样运行守护程序可执行文件(不调用fork()),一切都运行得很好。
到目前为止,主要行为的开发已经完成,所以我实现了一个--daemon参数,该参数在前面调用fork()方法(以及链接http://www.thegeekstuff.com/2012/02/c-daemon-process/中描述的setsid() ),以继续正常的过程。
下一步是在初始化Netlink套接字之后,守护进程调用Linux内核模块,这个模块保存守护进程的PID,以便推送消息。Linux内核守护程序正确接收来自守护程序进程的消息,但无法使用返回errno -111 (连接被拒绝)的netlink_unicast()发送消息。
我已经检查了由Linux内核模块收到的PID,它是相同的守护进程已经派生后,所以看起来是正确的。
您知道为什么我的守护进程在被派生后不能再从Linux内核模块接收消息(使用recvmsg()方法)吗?
发布于 2013-04-10 02:18:11
@artless noise是对的,我忘了调用umask(0);
https://stackoverflow.com/questions/15885367
复制相似问题