Brauche Hilfe: Prozesse / Pipe

Rittler

Rittler

Stümper
Hi @ all!

Ich hab vor ein paar Wochen angefangen in C zu programmieren und habe nun ein Problem zu dem mir einfach nichts mehr einfällt. Und zwar geht es um folgendes:

Ich habe 3 *.c Dateien, eine für den Parentprocecc, eine für den Childprocess und eine mit der main-Funktion. Der Plan ist nun, dass der main-Funktion ein Dateiname übergeben wird, welche dann vom Parentprocess eingelesen und in eine Pipe geschrieben wird und dann vom Childprocess auf der Konsole wieder ausgegeben wird.

Es klappt alles bis zu dem Punkt an dem der Childprocess von der Pipe lesen soll, dort krieg ich immer einen 'bad adress' Fehler.

Ich übergebe an die Childroutine den Pipedeskriptor und die Dateigröße, also:

Code:
int childRoutine(int *pipedeskriptor, long filesize)

und lese dann in der Childroutine folgendermaßen von der Pipe, nachdem ich per

Code:
close(pipedeskriptor[1]);

den writechannel der Pipe des Childprocess geschlossen habe

Code:
read(pipedeskriptor[0], buf, filesize);

Könnt ihr mir sagen, wo da der Fehler liegen könnte?
Ich hab echt keine Idee mehr...

Vielen Dank schonmal für euere Hilfe!
 
Wie ist "buf" definiert? Ist der Puffer gross genug (d.h. >filesize), oder solltest du vielleicht besser zeilen-/blockweise lesen/schreiben?

Gruss
 
Wie ist "buf" definiert?

Code:
char *buf;
long filesize;

struct stat filestat;
stat(filename, &filestat);
filesize = filestat.st_size;

buf = malloc(filesize);

Müsste so passen...wenn ich mir buf vor dem beschreiben der pipe ausgeben lass, krieg ich auch genau den Inhalt der Datei...


EDIT: Problem hat sich erledigt...Danke für den Tipp mit der Filesize...hab die n bissl größer gemacht, jetzt klappt alles!
 
Zuletzt bearbeitet:

Ähnliche Themen

sem_open - Problem mit Semaphoren

probleme mit select()

Pipe implementierung funktioniert nicht..

Per Sockets ins IRC

Internet mit C

Zurück
Oben