from__future__importprint_functionimportosimportsubprocessimportsysimportthreadingdefkill_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()