python3在windows环境下如何异步获得子进程结束的信号

发布于 2022-09-06 08:05:51 字数 866 浏览 19 评论 0

  1. 如题,我用subprocess创建了一个子进程,这个进程可能要运行很长时间,所以在linux下可以给父进程注册了SIGCHLD信号,查资料后大致代码如下,当子进程退出时父进程获取这个信号进行相应处理。但是移植到windows下,并没有这个信号,需要如何处理呢?
  2. 目前关键部分代码如下:
def exit_hanlder(signum, frame):
    logging.info('receive SIGCHLD')
    try:
        while True:
            cpid, status = os.waitpid(-1, os.WNOHANG)
            if cpid == 0:
                logging.info('no child process was immediately available')
                break
            exitcode = status >> 8
            logging.info('child process %s exit with exitcode %s', cpid, exitcode)
    except OSError as e:
        if e.errno == errno.ECHILD:
            logging.warning('current process has no existing unwaited-for child processes.')
        else:
            raise
    logging.info('handle SIGCHLD end')

signal.signal(signal.SIGCHLD, exit_hanlder)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半寸时光 2022-09-13 08:05:51

可以参考这个回答,调用 WaitForMultipleObjects API

https://stackoverflow.com/que...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文