Din kod innehåller inget som skriver till stdin för din underordnade process så jag skulle bli förvånad om du fick ellipsen som indikerar ofullständigt kommando när du faktiskt inte skickar något kommando alls - ofullständigt eller inte.
Som sagt, många kommandoradsverktyg beter sig annorlunda när de upptäcker en riktig terminal ansluten till deras stdin/stdout. T.ex. git-logg
kommer att söka resultaten när du kör det direkt men inte när du skickar resultaten till något annat kommando som git log | katt
så detta kan också vara fallet här.
Detta kan också ha att göra med buffringen - om din stream är linjebuffrad kommer du inte att se någon rad som inte avslutas med en ny rad direkt.
Den verkliga frågan är:ser du
Att skriva interaktiva CLI-verktyg kan vara knepigt. T.ex. se vad jag behövde göra för att testa ett mycket enkelt interaktivt program här:
Jag var tvungen att skapa två namngivna pipes, se till att stdin, stderr och stdout inte är buffrade och sedan använda några andra knep för att få det att fungera. Det är ett skalskript men det är bara för att visa dig ett exempel.