Il tuo codice non include nulla che scriva nello stdin del tuo processo figlio, quindi sarei sorpreso se avessi i puntini di sospensione che indicano un comando incompleto quando in realtà non invii alcun comando, incompleto o meno.
Detto questo, molte utilità della riga di comando si comportano in modo diverso quando scoprono un terminale reale collegato al loro stdin/stdout. Per esempio. git log
visualizzerà i risultati quando lo esegui direttamente ma non quando esegui il pipe dei risultati su qualche altro comando come git log | cat
quindi questo potrebbe essere anche il caso qui.
Questo può anche avere a che fare con il buffering:se il tuo stream è con buffer di riga, non vedrai immediatamente alcuna riga che non sia terminata con una nuova riga.
La vera domanda è:vedi il >
richiesta? Invii qualche comando alla mongo shell?
Lo scripting di strumenti CLI interattivi può essere complicato. Per esempio. guarda cosa dovevo fare per testare un programma interattivo molto semplice qui:
Ho dovuto creare due pipe con nome, assicurarmi che stdin, stderr e stdout non fossero bufferizzate e quindi utilizzare altri trucchi per farlo funzionare. È uno script di shell ma serve solo per mostrarti un esempio.