web-dev-qa-db-fra.com

Processus enfant Nodejs: écrire dans stdin à partir d'un processus déjà initialisé

J'essaie de générer un processus externe phantomjs en utilisant le nœud child_process puis envoyer des informations à ce processus après son initialisation, est-ce possible?

J'ai le code suivant:

var spawn = require('child_process').spawn,
    child = spawn('phantomjs');

child.stdin.setEncoding = 'utf-8';
child.stdout.pipe(process.stdout);

child.stdin.write("console.log('Hello from PhantomJS')");

Mais la seule chose que j'ai eue sur la sortie standard est l'invite initiale pour la console phantomjs.

phantomjs> 

Il semble donc que le child.stdin.write ne fait aucun effet.

Je ne suis pas sûr de pouvoir envoyer des informations supplémentaires aux phantomjs après la première apparition.

merci d'avance.

44
zanona

Vous devez également passer \n symbole pour faire fonctionner votre commande:

var spawn = require('child_process').spawn,
    child = spawn('phantomjs');

child.stdin.setEncoding('utf-8');
child.stdout.pipe(process.stdout);

child.stdin.write("console.log('Hello from PhantomJS')\n");

child.stdin.end(); /// this call seems necessary, at least with plain node.js executable
81
Vadim Baryshev