Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

fork() bei geöffnetem Fifo

4 views
Skip to first unread message

Thomas Olschewski

unread,
Feb 21, 2002, 8:51:44 AM2/21/02
to
Hallo,

mich interessiert mal das Verhalten bei folgender Konfiguration:

2 Prozesse sind durch 2 Fifos verbunden (Lesen/Schreiben in beide
Richtungen). Einer der beiden Prozesse erzeugt über fork() noch ab und zu
einen Kindprozeß. Der Kindprozeß soll sich um die Fifos gar nicht weiter
kümmern und auch nicht die Kommunikation des Elternprozesses mit dem ersten
Programm stören.

Was passiert mit den Fifos des Elternprozesses? Die Daten des
Elternprozesses einschließlich der Fifo-"Enden" werden ja mitkopiert. Die
Fifos können ja nun nicht an einem Ende gegabelt sein. Sind die Fifos für
den Kinprozeß erstmal zu? Werden die Fifos im Elternprozeß geschlossen und
müssen dann wieder geöffnet werden? Läuft alles wie gehabt, wenn ich im
Kindprozeß die Fifos nicht anrühre? Was würde passieren, wenn der Kindprozeß
mit einem der Fifos arbeitet?

Thomas


Felix von Leitner

unread,
Feb 21, 2002, 10:05:33 AM2/21/02
to
Thus spake Thomas Olschewski (t...@innomic.com):

> mich interessiert mal das Verhalten bei folgender Konfiguration:

Typischer Fall von "probieren wir's aus". Das wäre im Übrigen auch echt
deutlich viel schneller gegangen als hier ein längliches Posting
abzusetzen.

Die Lösung ist, daß die Deskriptoren mitkopiert werden und im Kind und
Vater offen bleiben. Wenn ein Kind mit einem der Fifos arbeitet, ist
das als hätte der Vater mit dem Fifo was getan.

Felix

Uwe Ohse

unread,
Feb 21, 2002, 9:58:38 AM2/21/02
to
Hallo Thomas,

>Elternprozesses einschließlich der Fifo-"Enden" werden ja mitkopiert. Die
>Fifos können ja nun nicht an einem Ende gegabelt sein.

Doch.
Mit fork() erzeugte Kindprozesse erben sämtliche offenen Filehandles.


>Sind die Fifos für den Kinprozeß erstmal zu?

Nein.


>Werden die Fifos im Elternprozeß geschlossen und
>müssen dann wieder geöffnet werden?

Nein.


>Läuft alles wie gehabt, wenn ich im Kindprozeß die Fifos nicht anrühre?

Ja.

>Was würde passieren, wenn der Kindprozeß mit einem der Fifos arbeitet?

Das hängt davon ab. Ohne Kenntnis der Daten läßt sich das nicht genau
sagen.
Der Kindprozess kann die Fifo-Filehandles aber schließen ohne daß die
anderen Prozesse das bemerken.

Gruß, Uwe

Thomas Olschewski

unread,
Feb 21, 2002, 5:38:55 PM2/21/02
to
"Felix von Leitner" <usenet-...@fefe.de> schrieb im Newsbeitrag
news:3c75...@fefe.de...

> Typischer Fall von "probieren wir's aus". Das wäre im Übrigen auch echt
> deutlich viel schneller gegangen als hier ein längliches Posting
> abzusetzen.

Ich bin eher der Typ, der versucht eine Aufgabe erstmal gedanklich
vorzubereiten, wenn er sich auf Neuland begibt. Man könnte nun beim
Probieren dieses oder jenes feststellen, das stimmt. Aber vielleicht gibt es
irgendwelche besonderen Bedingungen im Testprogramm, welche ein bestimmtes
Ergebnis erzeugen, das sich nicht verallgemeinern läßt und unter anderen
Bedingungen nicht einstellt ...

> Die Lösung ist, daß die Deskriptoren mitkopiert werden und im Kind und
> Vater offen bleiben. Wenn ein Kind mit einem der Fifos arbeitet, ist
> das als hätte der Vater mit dem Fifo was getan.

... und da ist mir obige, knappe Antwort eine große Hilfe. Vielen Dank.

Thomas

p.s. Ich poste wirklich erst, wenn Google oder alles, was ich so an
Literatur on- und offline abgeklopft habe, nichts bringen.


Thomas Olschewski

unread,
Feb 21, 2002, 5:40:58 PM2/21/02
to
"Uwe Ohse" <u...@ohse.de> schrieb im Newsbeitrag
news:20020221145...@serak.ohse.de...
> Nein. [...]
> Nein. [...]
> Ja. [...]

Knapp und präzise. Vielen Dank.

Thomas


Peter J. Holzer

unread,
Feb 21, 2002, 7:49:13 PM2/21/02
to
On 2002-02-21 14:58, Uwe Ohse <u...@ohse.de> wrote:
>>Läuft alles wie gehabt, wenn ich im Kindprozeß die Fifos nicht anrühre?
>
> Ja.

Fast. Wenn Du im Vaterprozess das FIFO schließt, ist es immer noch (im
Kindprozess) offen, d.h., die andere Seite bekommt das nicht mit.

hp


--
_ | Peter J. Holzer |
|_|_) | Sysadmin WSR | In case of emergency break laws of physics.
| | | h...@hjp.at |
__/ | http://www.hjp.at/ | -- Stephen Baxter

0 new messages