subprocess hang on

subprocess hang on

python调用子进程,发生锁住主进程的问题.

try:
    process = subprocess.run(
        f"{DOBF}",
        input=program.encode('utf-8'),
        shell=False,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        executable="/bin/bash",
        timeout=20,
    )
except subprocess.TimeoutExpired:
    print(f"Error subprocess timeout \n")
    process.kill()
    process.wait()
    return default_return
except Exception as e:
    print(f"Error subprocess exception {e} \n")
    return default_return

out = process.stdout.decode()
    1. 添加超时时间timeout
    1. 注意pipe管道是否会满

pipe管道默认使用系统缓存大小65535, stdin和stdout默认每次传输大小为65535, 如果当填满之后不清空就会导致进程hang on.


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wind.kaisa@gmail.com

💰

×

Help us with donation