繁体   English   中英

subprocess.Popen().kill() + subprocess.Popen().communicate() 停止程序

[英]subprocess.Popen().kill() + subprocess.Popen().communicate() halts the program

我正在尝试运行具有时间限制subprocess.Popen().exe文件。 我尝试使用process.kill() + process.communicate()组合来处理异常。 但是当我尝试实现它时,程序就停止了。

        process = subprocess.Popen(f"{filename}.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell = True)
        try:
            process.stdin.write(curr_input.encode("utf-8"))
            result, error = process.communicate(timeout=2)
            error = error.decode('utf-8')
            result = result.decode('utf-8')
            process.wait()
            if process.returncode != 0:
                return result + "\n" + error + "\n" + "error code: " + str(process.returncode)
            else:
                return result
        except subprocess.TimeoutExpired:
            process.kill()
            outs, err = process.communicate()
            process.wait()
            return "Timed out\n" + "error code: " + str(process.returncode)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM