Question

D'après ce que j'ai compris, cela devrait fonctionner, mais pas de chance pour moi jusqu'à présent.Je poste cette question en espérant que je fais quelque chose de vraiment stupide.J'ai:

bonjour.rb

#!/usr/bin/env ruby

3.times do
  puts 'hello'
  sleep 1
end

queue.js

var cp = require('child_process');
var tail = cp.spawn('./hello.rb');

tail.stdout.pipe(process.stdout);

/* Also tried this: */
tail.stdout.on('data', function(data) {
  console.log(data.toString())
});

hello.rb est exécutable.

Quand je cours node tail.js, 3 bonjour sont imprimés sur la sortie standard, mais après, la boucle se termine.Vous pouvez le vérifier en modifiant 3.times pour juste loop pour une boucle infinie et ne rien voir dedans stdout.Le cas de la boucle infinie est en fait ce que j'essaie de comprendre comment faire.

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Vous devriez essayer soit d'ajouter $stdout.flush après votre puts ou en définissant $stdout.sync = true au début de votre script Ruby.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top