Ich erstelle einen kleinen proprietären Game Server Manager in Node.js; derzeit läuft es das Spiel, indem über child_process
Laichen:Erneutes Verbinden mit dem erzeugten Prozess über nodejs
var server = spawn(cmd, args, { cwd: 'something' });
Solange der Manager ich Rohr Befehle können läuft weiter und mit dem Kind umgehen, wie Ich mag würde. Bedenken Sie jedoch die Möglichkeit, dass mein Manager abstürzt oder geschlossen ist. Wie würde ich dann wieder an den zuvor erstellten Child-Prozess (der noch lief, während der Manager war) wieder anhängen? Ich kann pidfiles speichern, um zu versuchen, und wieder zu verbinden, die auf pid basieren; aber ich bin mir nicht sicher, wie man ein child_process
Objekt mit Zugang zu den stdio
Objekten des Kindes bekommt.
Ich möchte wirklich, dass dies wiederherstellbar ist; jede Hilfe wird geschätzt, danke!
Bitte beachten: Die Spielserver sind proprietär, einige Beispiele sind Minecraft, Quelle DS usw. Angenommen, ich habe keinen Zugriff auf die Sever Quelle.
EDIT
wie einige Quellcode von Knotens child_process
sieht es nach dem Lesen, wenn Sie stdinStream
, stdoutStream
oder stderrStream
es sollte nur eine Steckdose, um es öffnen genannt eine Eigenschaft in den Optionen festlegen. (Siehe Zeilen 428 - 496). Das Problem ist also, wie kann ich aufhören spawn von eigentlich machen einen Spawn und stattdessen nur seine Werte auf der Grundlage einer angegebenen PID und Streams ich passiere. (Ich würde meine stdinStream
erhalten, indem fs.createWriteStream('/proc/PID/fd/0');
zu tun, die arbeiten sollte, da das fd als Rohr erzeugt wird.)
hmm. Ich frage mich, ob Sie das in irgendeiner Programmiersprache tun könnten, geschweige denn js/node. Wenn ich es wäre, würde ich einen Blick auf die Verwendung von Sockets werfen, um diese – ControlAltDel
zu lösen. Ich übergebe einige Befehle über 'stdin' des Child-Prozesses, da ich wenig Erfahrung mit * nix Sockets habe. zur "stdin" des Kindes? – Chad
Hat jemand irgendwelche Ideen dazu? – Chad