2012-08-16 3 views

Antwort

25

@ TanzeebKhalili Antwort funktioniert, aber Sie könnten Kernel.spawn() berücksichtigen, die für den Prozess wartet nicht zurück:

pid = spawn("./test.sh") 
Process.detach(pid) 

Beachten Sie, dass nach der Dokumentation, ob Sie spawn() verwenden oder manuell fork() und system() , sollten Sie die PID und entweder Process.detach() oder Process.wait() vor dem Beenden greifen.

Bezüglich Umleitung Standardfehler und Ausgang, das ist einfach, mit spawn():

pid = spawn("./test.sh", :out => "test.out", :err => "test.err") 
Process.detach(pid) 
+0

Nizza, funktioniert auch in den Fenstern! mit mehreren Prozessen, die zu test.out schreiben einige Zeilen sind verstümmelt, obwohl – peter

+0

@peter Ja gepuffert Schreibvorgänge in die gleiche Datei gleichzeitig von mehreren Prozessen würde in der Tat einige Zeilen verstümmeln. Es gibt eine Reihe von Lösungen für dieses Problem, aber die einfachste besteht darin, von jedem Prozess in eine separate Datei zu schreiben. Andernfalls würden Sie wahrscheinlich einen separaten Prozess zum Multiplexen der Ausgabe wünschen. –

8

Versuchen Sie folgendes:

Process.fork { system "./test.sh" } 

Wird nicht auf Windows arbeiten, für die Sie Threading verwenden können.

Verwandte Themen