在ROS系统中,当我们在主函数中写了While循环时,ctrl+c并不会立刻退出程序的执行,如下面这段函数
def main():
rospy.init_node('spawn_other_cars', anonymous=True)
while True:
rospy.loginfo('update')
ctrl+c之后会得到如下的情况,会经过一段时间才会杀掉进程
这种情况可能是和ROS的实现机制有关,因为每一个节点都是一个进程,靠master节点以及RPC机制进行通信,所以ctrl+c可能不能立刻终止其进程,我们可以利用rospy.is_shutdown()函数来判断当前是否关闭掉当前的进程
def main():
rospy.init_node('spawn_other_cars', anonymous=True)
while not rospy.is_shutdown():
rospy.loginfo('update')
if __name__ == '__main__':
main()
基本这样子按下ctrl+c之后,运行的while函数就可以很快得被终止了