在ros中杀死一个节点

时间:2018-03-12 01:09:25

标签: ubuntu-16.04 ros

在ROS中,节点列表如下

  

rosnode list

在ROS中,查杀节点如下

  

rosnode kill node_name

当我在特定节点上执行kill子命令时,节点列表正在正确更新,并且该节点正在关闭。

但我不知道某些进程在关闭后终止于终端的原因,如下所示

enter image description here

我需要再次按 ctrl + c ctrl + z 才能在终端上真正关闭它们。

为什么即使节点关闭,进程(在终端上)也没有终止?

1 个答案:

答案 0 :(得分:1)

您所看到的是该节点是否已关闭请求并且实际上并未停止但尝试停止。

rosnode kill something向NodeHandle发送SIGINT的内容以及应该做什么节点解构其类和免费NodeHandle(在正确编写的代码中)

我认为在您的特定节点中发生了什么SIGINT处理程序更改或您的NodeHandle无法销毁所有与您的roscpp Lib链接的对象并且需要您按CTRL + C以允许升级到更积极的终结

我所能做的就是在没有看到代码的情况下帮助你:

  • 确保您使用的每个班级都有解构器
  • 确保您释放代码中的每个硬件连接(串行连接,相机连接等)
  • 确保您释放每个指针和引用内存(不是必需的,但比对不起更安全)

如果您仍有问题尝试重写SIGINT信号这里是ROS-Wiki的链接,其中包含您的问题的良好信息