1

我有一个使用 Netlink 的 Linux 内核模块,以便与在用户空间中运行的守护进程通信。

在开发阶段,我总是像正常进程一样运行守护进程可执行文件(不调用fork()),一切正常。

到目前为止,主要行为的开发已经完成,所以我正在实现一个--daemon调用该fork()方法的参数(也setsid()如链接http://www.thegeekstuff.com/2012/02/c-daemon-process/中所述) ) 就在继续正常进程之前。

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

我检查了 Linux 内核模块收到的 PID,它与被分叉后的守护进程相同,所以看起来是正确的。

你知道为什么我的守护进程在分叉时不再能够recvmsg()从我的 Linux 内核模块接收消息(使用该方法)吗?

4

1 回答 1

0

@artless-noise 是对的,我忘记调用 umask(0);

于 2013-04-09T18:18:11.170 回答