PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C mit system calls



Oliver82
10-01-2004, 10:36
Hallo hoffe hier kann mir jemand helfen.


Und zwar habe ich die Aufgabe drei C programme zu schreiben, wovon einer ein Parent ist und zwei die Child's (unter Linux).
Jetzt soll der Parent eine Pipe eröffnen, das eine Kind dann was in die Pipe reinschreiben, das andere daraus lesen.

Ich habe nur ein kleines Problem bei dem Programm, und zwar wenn ich die Pipe jetzt öffne im Parent und danach die Kinder erzeuge, wird an ihnen ja automatisch die Pipe vererbt imho. Aber wie genau kann ich die dann ansprechen in dem Kind. Wohlgemerkt es sind drei verschiedene Programme.
Muss ich die Pipe doch über einen exec Befehl weitergeben, oder gibt es einen speziellen Befehel beim child, wie getpipe oder sowas.


Ich hoffe das mir jemand helfen kann.


MfG
Oliver82

peschmae
10-01-2004, 12:37
Also drei verschiedene Programme, nicht nur Prozesse?

Wenn es nur Prozesse wären, wärs recht einfach. Dann hast du ja die Variablen/Pointer einfach so frei Haus geliefert.

Bei verschiedenen Programmen musst du "Named Pipes" benutzen - eine nicht-Normale Datei ("FIFO") wird angelegt und darin geschrieben/daraus gelesen.



#include <sys/types.h>
#include <sys/stat.h>

int mkfifo(const char *pfadname, mode_t modus)


Die Pipe kannst du dann mit open öffnen und darin schreiben/daraus lesen. Ohne O_NONBLOCK wird open für den Leser blockiert, bis es was zu lesen gibt, selbigen für den Schreiber, der wartet, bis die FIFO zum Lesen geöffnet wurde.

Steht in Helmut Herolds "Linux - Unix Systemprogrammierung"

MfG Peschmä