如果我在运行程序时将笔记本电脑与raspberry pi断开连接会发生什么?
我的程序还在运行吗?会有错吗?或者什么?
答案 0 :(得分:0)
来自ssh文档:
shell收到SIGHUP后默认退出。退出前, 交互式shell将SIGHUP重新发送到所有作业,运行或 停止。停止的工作被发送SIGCONT以确保他们收到 SIGHUP。防止shell发送SIGHUP信号到 特别的工作,它应该从作业表中删除 disown builtin(参见Job Control Builtins)或标记为不接收 SIGHUP使用disown -h。
您的程序的作用取决于它处理SIGHUP
的方式。有多种方式可以影响SIGHUP
的行为。它可以在程序代码中完成。例如,Deamons将忽略该信号。或者可以通过使用n = like nohup
等工具
答案 1 :(得分:0)
您始终可以使用屏幕运行终端作业。然后,如果断开连接,正在运行的作业将自动“分离”并仍在运行,或者您可以在断开终端之前手动将其分离。查看屏幕程序上的文档。
答案 2 :(得分:0)
这取决于程序的启动方式。
如果它是从def update_lecturer(self, field_to_update, value_to_set, lec_no):
self.field_to_update = field_to_update
self.value_to_set = value_to_set
self.lec_no = lec_no
self.myCursor.execute("UPDATE Lecturers SET "+self.field_to_update+" = (?) WHERE lec_no = (?)",(self.value_to_set,self.lec_no))
self.myConnection.commit()
启动的,或是作为crontab
托管服务的一部分启动的,则无论您是否断开连接都无关紧要。
如果你在shell中以交互方式启动它,那么你是否会像这样使用systemctl
一样无关紧要:
nohup
如果您是在nohup ./myprogram &
或screen
会话中启动它,那也无关紧要。
如果程序有一个忽略挂断信号的SIGHUP处理程序,它将忽略你的断开连接。
最简单的测试方法是编写一个程序,每秒闪烁一次LED,看看它在断开连接后是否一直闪烁。