从我的C ++源代码开始,我正在启动一个调用svc_run()
的RPC服务。一切看起来都很好,如果我在终端中输入rpcinfo -p
,我可以看到我的服务正在运行。
现在我正在开发一个“清理”功能,该功能应该停止此服务并将其从rpcinfo -p
列表中删除。
我该怎么做?目前我只能使用终端中的sudo rpcinfo -d program version
来阻止它。我怎么能从我的源文件中做到这一点?
感谢。
答案 0 :(得分:0)
过了一段时间,我发现了如何做到这一点。其实我遇到了一些意想不到的困难。执行此操作的标准方法是使用此:
svc_unregister(PROGID, VERSION)
但不知何故,它对我不起作用。经过大量试用和一些在线帮助(http://www.spinics.net/lists/linux-nfs/msg05619.html)后,我能够删除调用的RPC服务:
pmap_unset(PROGID, VERSION);
希望这会有所帮助:)
答案 1 :(得分:0)
尝试使用{{1}}功能。有关更多详细说明,请参阅rpc_svc_calls章节。
答案 2 :(得分:0)
我尝试了svc_run()的强制停止,但是没有找到解决方案,但是我让svc_run()在注册函数内停止然后停止 - 也许这可以帮到你 - 请看看这个:{ {3}}
答案 3 :(得分:0)
'最好'的解决方案是同时使用DevCpp和Danilo的解决方案:
这种组合允许您的RPC服务器作为恶魔运行,即无需用户交互,同时仍然提供干净的退出而无需取消该过程。