Váš kód nezahrnuje nic, co zapisuje do stdin vašeho podřízeného procesu, takže bych byl překvapen, kdybyste dostali tři tečky, které označují neúplný příkaz, i když ve skutečnosti nepošlete vůbec žádný příkaz – neúplný nebo jiný.
Jak již bylo řečeno, mnoho nástrojů příkazového řádku se chová odlišně, když objeví skutečný terminál připojený k jejich stdin/stdout. Např. git log
bude stránkovat výsledky, když jej spustíte přímo, ale ne když výsledky převedete do jiného příkazu, jako je git log | cat
takže to může být i tento případ.
To může také souviset s ukládáním do vyrovnávací paměti – pokud je váš stream ukládán do vyrovnávací paměti, neuvidíte hned žádný řádek, který by nebyl ukončen novým řádkem.
Skutečná otázka zní:vidíte >
výzva? Posíláte nějaký příkaz do mongo shellu?
Psaní interaktivních nástrojů CLI může být složité. Např. podívejte se, co jsem musel udělat, abych otestoval velmi jednoduchý interaktivní program:
Musel jsem vytvořit dvě pojmenované roury, ujistit se, že stdin, stderr a stdout nejsou ve vyrovnávací paměti, a pak použít nějaké další triky, aby to fungovalo. Je to skript Shell, ale je to jen pro ukázku.