2009-06-11 1 views
1

Ich habe eine Anwendung, die mehrere Prozesse hervorbringt. Ist es möglich, die Ausgabe der Kinder an ein anderes verstecktes Terminal umzuleiten, so dass es sich nicht mit der Elternausgabe vermischt und dem Endbenutzer die Möglichkeit gibt, das Terminal bei Bedarf zu verbergen?Anwendung an mehrere Linux-Terminals binden

Danke.

+0

können Sie das Programm ändern, die die untergeordneten Prozesse Laichen? –

Antwort

1

Die schnelle und schmutzige Möglichkeit, dies zu tun, ist die Ausgabe des untergeordneten Prozesses in eine (temporäre) Datei umzuleiten.

Ein Terminal die Datei-Tracking kann dann gestartet einen Befehl verwenden wie

xterm -e tail -f /tmp/child1.out 

Dieser Terminal geschlossen und geöffnet, wenn nötig.

Wenn Sie die Ausgabe nicht in einer Datei speichern möchten, können Sie einen Fifo verwenden (siehe mkfifo(1)), aber dann verlieren Sie die Möglichkeit, die vorherige Ausgabe zu sehen, da ein Fifo keine Daten speichert.

+0

Ich dachte daran, die Ausgabe in einen FIFO zu pumpen, die Frage ist, ob niemand aus dem FIFO liest und meine Anwendung wochenlang läuft, wird es nicht den RAM des OS mit dieser unnötigen Ausgabe füllen? – jackhab

+0

Nein. Es wird dein Programm blockieren. :-) – Thomas

+0

Gibt es irgendwelche Beschränkungen, wie viel ein Prozess in eine Pipe schreiben kann, bevor der Leser damit beginnt, sie zu leeren? – jackhab

0

von Ihrem Terminal laufen:

touch proc1.log 
xterm -e tail -f proc1.log 
topuch proc2.log 
xterm -e tail -f proc2.log 
/run/proc/1.sh >> proc1.log 
/run/proc/2.sh >> proc2.log 

jetzt Sie

0

Bildschirm kann dies tun, im Anschluss an die Ausgabe des erzeugten Prozesse 2 Terminals haben. Sie können einen getrennten Bildschirm mit dem neuen Programm starten.

Etwas wie:

screen -d -m -S my-emacs-session emacs foo.c