gpt4 book ai didi

python - 如何在按下 Ctrl+c 时以干净的方式杀死 python 程序(包括 ROS 和扭曲协议(protocol))?

转载 作者:行者123 更新时间:2023-11-28 17:27:49 35 4
gpt4 key购买 nike

我制作了一个 ROS 节点,它使用 python 的扭曲协议(protocol)与客户端建立连接。该程序按预期工作,但当我尝试使用 Ctrl+c 终止该程序时,它显示以下错误消息:

[server_send_command_ver3-4] 升级为 SIGTERM

我在下面包含了我的部分代码:

if __name__ == '__main__':
try:
#node initialization
rospy.init_node('listen', anonymous = True)

#publisher to publish message to clientconnection to display connection status on GUI
connect = rospy.Publisher("status", String, queue_size = 10)
connect.publish(" Lost Connection")

#twisted protocol and listen at port 80
factory = Factory()
factory.protocol = NewFactory
factory.clients = []
reactor.listenTCP(80, factory)
reactor.run()

except rospy.ROSInterruptException:
pass

最佳答案

一个好的方法是使用 rospy.on_shutdown()

基本上,在实现时,一旦请求关闭节点(如按 Ctrl + C),就会调用此函数。在你的情况下,你可以关闭这个函数内的连接并在完全关闭之前处理你需要的任何东西(最终像 reactor.close())。

这是取自 here 的示例:

def myhook():
print "shutdown time!"

rospy.on_shutdown(myhook)

关于python - 如何在按下 Ctrl+c 时以干净的方式杀死 python 程序(包括 ROS 和扭曲协议(protocol))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37257238/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com