2016-07-29 3 views
1

Gibt es in node.js eine Möglichkeit, einen neuen Prozess zu forktieren und mehrere Terminal-Shell-Befehle auszuführen und node.js-Funktionen wie fs.writeFileSync aus demselben Prozess/Kontext auszuführen.Mehrere Befehle von demselben node.js untergeordneten Prozess ausführen

Als ein Beispiel möchte ich Folgendes tun. Führen Sie alle folgenden Schritte im selben Prozess aus.

exec("git worktree add -b"....); 
exec("cd ../"); 
writeFileSync(...); 

Dies ist ein Express.js applcation, und weil mehrere Benutzer das gleiche Dateisystem zur gleichen Zeit und Durchführung git Aktionen auf der gleichen Repo-Zugriff wird, möchte ich für jeden von Laichen einen neuen Prozess um Konflikte zu vermeiden ein.

+0

Haben Sie darüber nachgedacht, all diese Befehle in ein einziges Skript zu schreiben? –

+0

@JuanStiza Nicht sicher, wie ich WriteFileSync ausführen würde. Ich vermute ich müsste mir eine andere js Datei anlegen und sie von einem anderen Shell Befehl aufrufen? – Alex

Antwort

-1

Trennen Sie es in einen Haupt-Hub, der seine Kinder anruft. Diese Kinder schreiben jedes Schreiben/Speichern vor, das Multithread sein muss.

Haben Sie einfach den übergeordneten Aufruf exec("node myWritingChild.js");, wenn es einen dieser Schreib-Threads machen muss.

Bitte beachten Sie: Es ist normalerweise besser, ein Kind zu führen, indem Sie es durch ein Rohr öffnen lassen. Es gibt many postings darüber, also schau es dir an, wenn du willst. Überprüfen Sie auch diese docs.

+0

Danke dafür. Dies scheint teilweise zu funktionieren. Ich lege alle Befehle in eine separate js-Datei und benutze den exec-Befehl, um sie auszuführen, aber es sieht so aus, als ob writeFileSync den Masterzweig ändert und nicht der neue Zweig, der von den beiden anderen Befehlen erzeugt wird. Ich würde erwarten, da die Befehle 'git worktree add ...' und 'cd ../branch' im gleichen Prozess mit writeFileSync arbeiten, um das Gegenteil zu tun. – Alex

+0

@Alex Wenn Sie versuchen, in dieselbe Datei aus mehreren Quellen zu schreiben, kann dies zu Problemen führen. Stellen Sie sicher, dass jeder Autor die entsprechende Erlaubnis hat und nicht in die Quere kommt. Alternativ haben Sie einen Schreibprozess/Kind, an den alle Kinder Warteschlangendaten senden, wenn Sie weiterhin Probleme haben. – Anselm

+0

das funktioniert jetzt. Das Problem war, dass 'git worktree add -b' einen neuen Pfad erstellt und ich versehentlich in den alten geschrieben habe. Alles in eine neue js-Datei zu packen und das Ausführen von exec scheint wie erwartet zu funktionieren. – Alex