Devo eseguire un comando di shell interattiva all'interno di node.js. Consente la nostra shell interattiva sia $ python
:Come eseguire il comando della shell interattiva all'interno di node.js?
var cp = require('child_process');
var pythonChildProcess = cp.spawn('python');
pythonChildProcess.stdout.on("data", function(data) {
console.log('data successfully written!', data); // never outputs anything
});
pythonChildProcess.stdin.write('1 + 1');
pythonChildProcess.stdin.end();
Questo codice non visualizzerà nulla (ma stdout dovrebbe essere 2
).
Ma se lo fosse, ci sarà un altro problema: come renderlo interattivo? Il processo termina quando chiamo pythonChildProcess.stdin.end();
! Ma volevo solo finire stdin e scrivere il prossimo stdin!
UPD: Se potessi emulare la pressione del pulsante enter
, sarei in grado di scrivere in modo interattivo sul processo. Ma aggiungere \n
alla fine della stringa di input non aiuta.
"per stdin fine e scrivere il prossimo stdin"? Puoi spiegare cosa intendi con questo? –
@ E_net4, mi piacerebbe eseguire il comando '$ python', scrivere un input (ad esempio' 1 + 1'), "premere' enter' ", ottenere un output (' 2' nel caso), quindi scrivere un altro input ('10 + 10')," premi 'enter'" di nuovo, ottieni un altro output, poi scrivi un altro input e così via ... E tali sequenze di "input" ho chiamato "stdins" –
quelli sono in realtà un singolo stream stdin, al quale si desidera inviare più righe di input. –