In Deiner ersten Lösung war das Problem, dass Du über das Ende von cmd hinaus schreiben konntest. Und das lief halt so lange bis Du mit CTRL+D den Input geschlossen hast oder das Programm halt irgendwann abstürzt. Ich rede hier von der Funktion listener().