Wie übergibt man im untergeordneten node.js-Prozessmodul sowohl Nachrichten als auch stdout vom untergeordneten zum übergeordneten Element?

9

Ich habe ein Problem mit dem child-process Modul, speziell mit child.spawn und child.fork. Ich verlasse mich auf die Dokumentation von child_process.fork, die besagt:

  

Dies ist ein Spezialfall der Funktion child_process.spawn () für   Launch Node.js Prozesse. Zusätzlich zu all den Methoden in a   normale ChildProcess-Instanz, hat das zurückgegebene Objekt eine Kommunikation   Kanal eingebaut Weitere Informationen finden Sie unter child.send (message, [sendHandle]).

Ich habe mein Problem unten vereinfacht:

parent.js ist:

%Vor%

child.js ist:

%Vor%

Wie erwartet. Die Ausgabe ist:

%Vor%

Ich möchte, dass es mit der kommentierten Zeile in parent.js unkommentiert funktioniert. Mit anderen Worten, ich möchte das stdout in dem Kindprozess in der n.stdout.on ('data' ... Anweisung im Elternprozess abfangen. Wenn ich es auskommentiere, erhalte ich einen Fehler:

%Vor%

Es macht mir nichts aus, asynchrone Child-Process-Varianten, Exec, Fork oder Spawn zu verwenden. Irgendwelche Vorschläge?

    
Sam 02.11.2015, 13:26
quelle

1 Antwort

18

Sie müssen die Eigenschaft silent für das Optionsobjekt festlegen, wenn Sie es an fork () übergeben, damit stdin, stdout und stderr an den übergeordneten Prozess zurückgegeben werden.

z.B. var n = cp.fork('./child.js', [], { silent: true });

    
Neil D 03.03.2016, 21:15
quelle

Tags und Links