from __future__ import print_function
import os
import subprocess
import sys
import threading

def kill_subprocess(process):
    process.kill()
    os._exit(1)

# Pass -f=none and --output-style=GNU to get only one line of output per input.
cmd = subprocess.Popen([sys.argv[1],
                        '--obj=' + sys.argv[2],
                        '-f=none',
                        '--output-style=GNU'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
watchdog = threading.Timer(20, kill_subprocess, args=[cmd])
watchdog.start()
cmd.stdin.write(b'0\n')
cmd.stdin.flush()
print(cmd.stdout.readline())
cmd.stdin.write(b'bad\n')
cmd.stdin.flush()
print(cmd.stdout.readline())
watchdog.cancel()
