如何解决如何检查子流程仍在正常运行?
为此,我无法发布代码,但是我一直试图从另一个创建系统任务栏的python脚本运行python脚本。该系统托盘将显示程序是否正确运行。
到目前为止,我已经尝试了几种方法,最有前途的方法是使用类似的方法:
p = subprocess.Popen([xxx,xxx],stdout=PIPE,stderr=PIPE)
然后,我检查stderr
是否有任何输出,表示有错误。
但是,这仅在我故意使错误发生(使用错误的文件路径)时有效,而当我使用正确的文件路径时却什么也没有发生,因为程序永不终止。
所以我遇到的主要问题是,因为我希望程序始终运行,除非有错误,否则它永远不会终止。我希望能够检查它是否正在运行,以便用户可以检查系统托盘上的状态。
解决方法
在Unix OS中,我们使用某些系统调用来进行进程管理。该进程在其父进程执行fork系统调用时启动。然后,父进程可以 wait(),以便子进程通过使用 exit()系统调用正常终止,或者由于致命的异常或信号(例如致命错误)而异常终止,SIGTERM,SIGINT,SIGKILL),退出状态将返回到OS,并且SIGCHLD信号将发送到父进程。然后,父进程可以通过wait系统调用检索退出状态,以了解实际发生的情况。干杯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。