Python 如何处理信号
假设以下代码按如下方式运行:Python 如何处理信号,python,operating-system,signals,Python,Operating System,Signals,假设以下代码按如下方式运行: cli()解析一些配置文件 blabla()打印一条消息“嗨!” 这两个函数是main() cli()也是SIGUSR2 以下是片段: def cli(): parser = argparse.ArgumentParser() parser.add_argument("--logger-file", dest="logger_file", required=True, help="YAML logging configuration file")
解析一些配置文件cli()
打印一条消息“嗨!”blabla()
- 这两个函数是
main()
也是cli()
SIGUSR2
def cli():
parser = argparse.ArgumentParser()
parser.add_argument("--logger-file", dest="logger_file", required=True, help="YAML logging configuration file")
parser.add_argument("--conf-file", dest="conf_file", required=True, help="app configuration file")
args = parser.parse_args()
setup_logger(args.logger_file)
commit_conf(args.conf_file)
def blabla():
while True:
logger.info("hi!")
time.sleep(60)
def recv_sigusr2(signum, stack):
cli()
def main():
cli()
signal.signal(signal.SIGUSR2, recv_sigusr2)
blabla()
if __name__ == "__main__":
main()
问题是:
SIGUSR2
信号时都运行blabla()
,因为只有信号处理程序才调用cli()
cli()
(不调用blablabla()
)呢blablabla
,但由于sleep
中断,循环的另一次迭代会立即开始