Article View: ch.comp.os.linux
Article #18920Bourne-Shell: zweistellige File-Deskriptoren?
From: Stefan Haller
Date: Mon, 07 Feb 2000 00:00
Date: Mon, 07 Feb 2000 00:00
44 lines
2008 bytes
2008 bytes
Hallo
ich hatte vor kurzem ein hinterhaeltiges Problem mit einer Applikation.
Hinterhaeltig deshalb, weil es nur ab und zu (abhaenig von der Art des
Aufrufs) aufgetreten ist. Die Applikation kommuniziert ueber pipes mit
einem Bourne-Shell-Script.
Ich habe das Problem eigentlich geloest (glaube ich), moechte jedoch
noch verifizieren, ob ich mit meiner Annahme ueber den Ursprung des
Fehlers richtig liege.
Obwohl zahlreiche Shell-Script-Programmier-Dokumente im Web vorhanden
sind, konnte ich bisher keines finden, welches den Umgang mit File
Deskriptoren genauer beschreibt.
Folgende 2 Funktionen werden zur Kommunikation mit dem Vater-Prozess
verwendet innerhalb des Shell-Scripts. $INPUTFD und $OUTPUTFD enthalten
die nummern der jeweiligen Filedeskriptoren der Pipes je fuer Lesen und
Schreiben.
receive ()
{
read INPUT <&$INPUTFD;
echo "$INPUT";
}
send ()
{
echo $1 >&$OUTPUTFD;
}
Ich stellte fest, dass das Programm immer dann abgebrochen ist, wenn
einer der Deskriptoren >=10 geworden ist. Als Loesung schliesse ich nun
vorher alle nicht benoetigten File-Deskriptoren und weise den benutzten
fd's neue nummern mit Hilfe von dup() zu.
Meine Theorie also: sh kann nur einstellige fd's benutzen (aehnlich wie
$1, $2 etc. die ja mit dieser Syntax auch nur bis 9 gebraucht werden
koennen (oder verwechsle ich da was?)).
Meine Frage nun: ist meine Theorie richtig? und wenn ja: mit welcher
Syntax kann dieses Problem behoben werden?
Danke und Gruss
Stefan
Technical Details
Message-ID:
<389E91C0.FBE4C6D5@ascom.ch>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: f4b73,290652182aca1719,start X-Google-Attributes: gidf4b73,public From: Stefan Haller <stefan.haller@ascom.ch> Subject: Bourne-Shell: zweistellige File-Deskriptoren? Date: 2000/02/07 Message-ID: <389E91C0.FBE4C6D5@ascom.ch> X-Deja-AN: 582580117 Content-Transfer-Encoding: 7bit Organization: ASCOM AG X-Accept-Language: en Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 Newsgroups: ch.comp.os.linux