我正在用python创建一个程序,该程序可以自动运行嵌入式系统,并希望优雅地处理程序中断。也就是说,如果可能的话,关闭资源并在实际退出之前发出信号,使其也正常退出。 此时,我的看门狗应该注意到这一点并重生所有内容。
我可以/应该期望在来自 Linux 的非交互式程序中接收哪些信号? 我正在使用 try/except 块来处理 i/o 错误。
系统是否正在关闭发出信号的事件? 除了我的看门狗,我还将有一个独立的进程监控硬件线路,当我的电源检测到掉电时设置该线路。 我有一个超级电容来提供一些运行时以允许适当的关闭。
捕获 sigint、sigterm 并确保清理套接字、文件、锁等任何内容。
根据您正在做的事情捕获其他信号。例如,如果您有开放的管道,则可以捕获sigpipe。
请记住,信号处理会让您进入竞争条件。您可能希望使用 sigprocmask 在处理信号时禁用信号。