/****************************************/ /* */ /* Prof. Dr. Carsten Vogt */ /* TH Koeln, Fakultaet IME */ /* http://www.nt.th-koeln.de/vogt */ /* */ /* UNIX-C-Schnittstelle: */ /* Prozesskommunikation ueber */ /* unbenannte Pipes */ /* */ /****************************************/ #include #include #include int main() { char buffer[5]; /* Puffer zum Datenempfang */ int fd[2]; /* Deskriptoren fuer Leseende (fd[0]) und Schreibende (fd[1]) der Pipe */ /* Erzeugung einer unbenannten Pipe und Speichern der Deskriptoren fuer Lese- und Schreibende in fd. */ printf("\nVater erzeugt die unbenannte Pipe\n"); pipe(fd); if (fork()==0) { /* Sohnprozess als Schreiber */ /* Lesedeskriptor schliessen, da nicht benoetigt */ close(fd[0]); /* 5 Bytes in die Pipe schreiben (4 Buchstaben + Ende-Zeichen \0) */ printf("\nSohn schreibt TEST in die Pipe\n"); write(fd[1],"TEST",5); exit(0); } /* Vaterprozess als Leser */ /* Schreibdeskriptor schliessen, da nicht benoetigt */ close(fd[1]); /* 5 Bytes aus der Pipe lesen */ read(fd[0],buffer,5); printf("\nVater liest %s aus der Pipe\n\n",buffer); }