2017-12-20 10 views
1

Ich habe einen nodejs-Daemon auf meinem Server laufen, möchte ich ihm einige Eingaben auf stdin geben und es stdout von einem Rails-Controller lesen, ist es mit Ruby möglich?Ist es möglich, einen laufenden Hintergrundprozess mit Ruby anzuhängen?

Ich sehe Open3, aber es scheint mir nur die Chance zu geben, einen neuen Prozess zu spawnen.

Ich brauche das halten den Nodejs-Prozess läuft, weil der Start-Overhead zu hoch ist, um bei jeder Anfrage aufgerufen werden.

+0

Sie können den Node-Prozess so einrichten, dass er einen Server ausführt und Eingaben an einem bestimmten Port akzeptiert. Dann machen Sie net Anfragen von Ruby zu Knoten – jakerella

+0

Der Overhead einer HTTP-Anfrage ist ziemlich hoch – ciaoben

+1

Kein Zweifel ... nur ein Gedanke, wenn Sie keine anderen Möglichkeiten, dies zu tun (ich bin kein Ruby Person). Du könntest eigentlich unter HTTP gehen, aber eine direkte TCP-Anfrage machen mit der [Net API] (https://nodejs.org/api/net.html) – jakerella

Antwort

0

Im Allgemeinen gibt es keine Möglichkeit, die IO-Streams eines laufenden Prozesses anzuhängen, es sei denn, es wurde ursprünglich dafür eingerichtet. Es ist einfach, wenn der Prozess zum Beispiel so konfiguriert wurde, dass er von einer pipe liest: einfach Ruby in diese Pipe schreiben wie jede andere Datei (das ist was die Open3-Bibliothek tut).

Für einen Daemon gibt es normalerweise mehr Möglichkeiten, mit ihm zu interagieren, als seine Eingabe mit einer Pipe zu entführen, obwohl dies von dem jeweiligen Daemon und der Art der Verwaltung durch das Betriebssystem abhängt. Beispielsweise sind sockets eine beliebte Methode, um mit einem laufenden Prozess auf * nix-Systemen zu kommunizieren.

Verwandte Themen