我有以下 Python 程序来启动 HTTP 服务器和 ROS 节点。
httpd = ThreadingHttpServer()
rospy.init_node('server')
rospy.on_shutdown(httpd.shutdown)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
我希望程序终止
- 当我打电话时
httpd.shutdown()
(例如在收到/kill
命令后), - 当 ROS 关闭时(即 if
rospy.is_shutdown()
)和 - 当我按下时Ctrl+C(这是最不重要的)。
不知何故,我正在努力识别 ROS 关闭,即使我尝试rospy.on_shutdown()
了自己的while
循环调用httpd.handle_request()
。
在当前版本中,节点(以 开头rosrun
)在关闭时不会停止roscore
。
如何合理地组合这两个模块?