Lorsque je lance le code ci-dessous, je n'ai pas la même sortie sur la console que je vois si je lance cette commande directement via le terminal. Une idée sur pourquoi? Y at-il une autre fonction au-delà de stdout.on('data')
qui crache plus d'informations? Plus précisément, lorsque je l'exécute via un terminal, j'obtiens une sorte de barre de progression indiquant un pourcentage de fin de commande. Quand je l'exécute via un nœud, il crache certaines des informations similaires antérieures, puis s'arrête pendant un moment jusqu'à ce que la commande soit terminée.La sortie spawn du processus fils du nœud est différente de celle du terminal
var sh = spawn('sh', ['app/scripts/scriptA.sh', path]);
sh.stdout.on('data', function (data) {
console.log(data.toString());
});
Est-il possible que le flux 'stderr' soit régulé par le débit et que cela bloque les choses? Peut-être ajouter un gestionnaire 'sh.stderr.on ('data', ...)' aussi. – jfriend00
En outre, la principale différence entre l'exécuter comme vous l'êtes et l'exécuter sur la ligne de commande est que lorsque vous exécutez la ligne de commande, vous exécutez un shell, mais lorsque vous l'exécutez, vous ne l'utilisez pas. Cela pourrait conduire à des comportements différents. Vous pouvez dire au spawn de l'exécuter dans un shell si vous le souhaitez. – jfriend00