Uw code bevat niets dat naar de stdin van uw kindproces schrijft, dus het zou me verbazen als u de ellips krijgt die een onvolledige opdracht aangeeft, terwijl u in feite helemaal geen opdracht verzendt - onvolledig of anderszins.
Dat gezegd hebbende, gedragen veel hulpprogramma's op de commandoregel zich anders wanneer ze een echte terminal ontdekken die is verbonden met hun stdin/stdout. bijv. git log
pagina's de resultaten wanneer u het rechtstreeks uitvoert, maar niet wanneer u de resultaten naar een ander commando stuurt, zoals git log | cat
dus dit kan hier ook het geval zijn.
Dit kan ook te maken hebben met de buffering - als je stream line-gebufferd is, zie je geen regel die niet meteen met een nieuwe regel wordt beëindigd.
De echte vraag is:zie je de >
snel? Stuur je een commando naar de mongo-shell?
Het schrijven van interactieve CLI-tools kan lastig zijn. bijv. zie hier wat ik moest doen om een heel eenvoudig interactief programma te testen:
Ik moest twee benoemde pijpen maken, ervoor zorgen dat stdin, stderr en stdout niet worden gebufferd, en dan een aantal andere trucs gebruiken om het te laten werken. Het is een shellscript, maar het is alleen bedoeld om u een voorbeeld te laten zien.