🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ch.comp.os.linux
Article #18378

Re: Pipe-Frage

#18378
From: clemi
Date: Tue, 21 Mar 2000 00:00
43 lines
2663 bytes
>Hallo,
>
>Wer kennt sich aus mit Pipes?
ich versuchs mal :-)
>
>Ich f�hre folgenden Befehl aus:
>
>> scriptA | scriptB
>
>Beide Scripts brauchen sehr lange f�r die Ausf�hrung.
>Wenn ich jetzt scriptA kille, dann wird automatisch
>auch scriptB gekillt (weil es ein child-Prozess von
>scriptA ist, vermute ich). Jetzt hat es aber
>typischerweis noch eine Menge Daten in meiner pipe,
>die dadurch verloren gehen.
>
>Wie kann man scriptA und scriptB per pipe verh�ngen,
>so dass scriptB erst terminiert, wenn scriptA nicht
>mehr lebt UND die pipe leer ist? Ist "named pipes"
>das Stichwort? Wie gebraucht man die?

ich bezweifle, dass dies geht, denn unix systeme starten beide scripte, so
dass sie parallel laufen. ob "named pipes" die richtige loesung ist, weiss
ich nicht. aber versuchen kann man es ja. also, mit mknod kannst du eine
"named pipe" erzeugen (schlag am besten in der man page nach, wie man mknod
genau handhabt). mknod erzeugt jedenfalls eine datei, die du mittels "ls -l"
auflisten kannst. du wirst bemerken, dass am zeilenanfang dieser datei ein
"f" steht. "f" ist die abkuerzung fuer "FIFO", also First In First Out. und
so funktioniert diese datei auch, als buffer. der eine prozess schreibt was
rein, und der andere prozess liest aus. FIFO dateien (oder eben "named
pipes") kannst du wie ganz normale dateien behandeln. auf deinen fall
bezogen bedeutet dies, dass das script 1 in die FIFO datei reinschreibt und
das script 2 die daten von dort ausliest:

script1 > fifodatei > script2

ich bin mir allerdings nicht sicher ob die letzte redirection korrekt ist
(bin momentan auf NT, und dort kann man so zeugs nicht testen).
aber auch hier werden wahrscheinlich beide scripte parallel gestartet,
sodass du wieder genau gleich weit bist. auf jedenfall solltest du nicht
vergessen die FIFO datei wenn noetig am ende zu loeschen.

hoffe ich konnte dir helfen, clemi.
Technical Details
Message-ID: <8b8bj3$fq9$1@news.swissonline.ch>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <38CFAA34.C6825D98@NOSPAMunifr.ch>

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII
X-Google-Thread: f4b73,b808a6e0a7e751ec
X-Google-Attributes: gidf4b73,public
From: "clemi" <cdal@swissonline.ch>
Subject: Re: Pipe-Frage
Date: 2000/03/21
Message-ID: <8b8bj3$fq9$1@news.swissonline.ch>
X-Deja-AN: 600480625
Content-Transfer-Encoding: 8bit
References: <38CFAA34.C6825D98@NOSPAMunifr.ch>
Content-Type: text/plain; charset=ISO-8859-1
X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3
X-Complaints-To: abuse@swissonline.ch
X-Trace: news.swissonline.ch 953659811 16201 62.2.96.46 (21 Mar 2000 17:30:11 GMT)
Organization: Swiss Online (Cablecom Media), Zurich, Switzerland
Mime-Version: 1.0
NNTP-Posting-Date: 21 Mar 2000 17:30:11 GMT
Newsgroups: ch.comp.os.linux