Julexander
Lieutenant
- Registriert
- Juli 2004
- Beiträge
- 568
[FONT=verdana,sans-serif]Die Prozesse sind in ein Binarytree organisiert (main/root -> 2x children -> 4x children -> 8x ....)
Leafs produzieren Daten die ueber die eigenen Parents zum Main/Root weitergegeben werden.
Transport mit Hilfe von Pipes.
Das Senden eines Signals ein irgendeinen Prozess verursacht, dass dieser seine Daten direkt an den Root mit Hilfe von Shared Memory, welche dann in die Konsole ausgegeben werden.
Bisher hab ich so viel:
Ich wollte erst ueberhaupt main und den letzten child schreiben, damit ich sehe wie das weitergeben der Pipes funktio0niert, aber beim Printen kommen komische Zeichen heraus :/
[/FONT]
Leafs produzieren Daten die ueber die eigenen Parents zum Main/Root weitergegeben werden.
Transport mit Hilfe von Pipes.
Das Senden eines Signals ein irgendeinen Prozess verursacht, dass dieser seine Daten direkt an den Root mit Hilfe von Shared Memory, welche dann in die Konsole ausgegeben werden.
Bisher hab ich so viel:
Ich wollte erst ueberhaupt main und den letzten child schreiben, damit ich sehe wie das weitergeben der Pipes funktio0niert, aber beim Printen kommen komische Zeichen heraus :/
[/FONT]
Code:
[FONT=verdana,sans-serif]
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
void child_3(int* parent_pipe){
sleep(2);
char string[] = "Yo mAN";
close(*parent_pipe);
write(*parent_pipe, string, (strlen(string)+1));
}
//fork 0 = child
//else parent
int main(int argc, char**argv){
int mainpipe1[2], mainpipe2[2];
int childpipe1[2], childpipe2[2];
int nbytes;
char readbuffer[80], readbuffer2[80];
//char string[] = "Yo\n";;
pipe(mainpipe1);
//pipe(mainpipe2);
pipe(childpipe1);
//pipe(childpipe2);
int f;
f = fork();
if(f == 0){ //CHILD
close(childpipe1[1]); //pipe from child - read from
child_3(childpipe1);
int nbytes2 = read(mainpipe1[childpipe1[0]], readbuffer2, sizeof(readbuffer2));
close(mainpipe1[0]); // pipe to parent - write
write(mainpipe1[1], readbuffer2, (strlen(readbuffer2)+1));
} else { // PARENT
close(mainpipe1[1]);
nbytes = read(mainpipe1[0], readbuffer, sizeof(readbuffer));
printf("Received string1: %s \n", readbuffer);
}
wait(0);
return 0;
}[/FONT]