def subprocess_timeout_compliant()

in src/python/detectors/leaky_subprocess_timeout/leaky_subprocess_timeout.py [0:0]


def subprocess_timeout_compliant():
    import subprocess
    process = subprocess.Popen("ls -al",
                               bufsize=-1,
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE)
    try:
        # Compliant: makes sure to terminate the child process when
        # the timeout expires.
        outs, errs = process.communicate(timeout=15)
    except subprocess.TimeoutExpired:
        process.kill()
        outs, errs = process.communicate()