Hallo, On Fri, 27 Jun 2003, Ralph Müller schrieb:
wie kann man die Anzahl der Dateideskriptoren erhöhen?
$ echo "Hallo Welt" 1>&3 bash: 3: Ungültiger Dateideskriptor
Dieser Fehler hat eine andere Ursache. "3" ist ungueltig, weil nicht mit einer Datei verknuepft. 0, 1 und 2 sind nur deshalb gueltig, weil dies die Standarddeskriptoren der standardmaessig geoeffneten Dateien stdin, stdout und stderr sind. Also musst du selber eine Datei oeffnen bzw. den Deskriptor anlegen. exec 3>&1 legt den Descriptor '3' an und leitet ihn auf /dev/stdout, exec 3>/dev/null legt ihn auf /dev/null. Fuer weiterer Beispiele siehe den Begin eines beliebigen configure-script von automake/autoconf.
Der Hintergrund meiner Frage ist folgendes Problem:
Ich rufe ein Skript folgendermaßen auf: MeinSkript.sh 1>ErsteNamedPipe 2>ZweiteNamedPipe
Innerhalb von MeinSkript.sh steht folgendes: echo "Das geht mittels StdOut in die erste Pipe" echo "Das geht mittels StdErr in die zweite Pipe" 1>&2
MeinSkript.sh soll also mehrere Named Pipes mit Ausgaben "füllen". Mit bis zu 2 Named Pipes (mittels StdOut und StdErr) scheint dies ja zu funktionieren, aber wie kann ich deren Anzahl erhöhen?
exec 3>/named_pipe_eins exec 4>/named_pipe_zwei exec 5>/named_pipe_drei .... Alternativ: exec 1>/named_pipe_eins exec 2>/named_pipe_zwei exec 3>/named_pipe_drei exec 4>/named_pipe_vier exec 5>/named_pipe_fuenf .... Damit biegst du aber die Ausgabe von z.B. "echo blubb" schon in die named_pipe_eins um und Fehlermeldungen landen in _zwei... Ob das gewollt ist musst du wissen. ==== aus 'help exec' ==== exec: exec [-cl] [-a name] file [redirection ...] Exec FILE, replacing this shell with the specified program. If FILE is not specified, the redirections take effect in this shell. ==== Der letzte Halbsatz ist der wichtige ;) In man -P'less "+/Duplicating File"' bash steht noch ein wenig mehr dazu... -dnh -- 141: Meinungsaustausch "Meinungsaustausch" heißt aber nicht, daß jemand mit seiner Meinung in die Diskussion hineingeht und mit Deiner wieder herausgeht. (Michael Ottenbruch)