Prozesskommunikation mit PIPES - wie funktioniert das?

Dieses Thema im Forum "C/C++" wurde erstellt von UnixTeddy, 10.06.2014.

  1. #1 UnixTeddy, 10.06.2014
    UnixTeddy

    UnixTeddy Grünschnabel

    Dabei seit:
    10.06.2014
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo erstmal,

    Ich sitze gerade an einer C-Aufgabe und komme nicht so recht weiter.

    3 Programme müssen geschrieben werden:

    1. Eines, dass einen Sende und einen Empfängerprozess erstellt.

    2. Ein "Sende-Programm", dass eine Nachricht über ein Xterm in die Pipe schreibt.

    3. Ein "Empfangs-Programm", dass die Nachricht aus der Pipe auf ein Xterm ausliest.


    Wir wurden mehr oder weniger ins kalte Wasser geworfen und dürfen uns dass nun "selbstständig" erarbeiten. Dementsprechend habe ich viele Fragen.

    Hier ist erstmal

    1. Das "Vaterprogramm":

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/wait.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    
    main( )
    {
    
    int pid_1, pid_2, ret_pid;
    short i;
    int status;
    /* Erstellen der Pipe */
    if( mkfifo( "FIFO", 0666 ) < 0 ) 
    {
          perror("Fehler beim Erstellen der Pipe");
          exit(-1);
    }
    /* Erstellen eines Sohn-Prozesses fuer den Empfaenger */ 
    if( ...)
    {
    /* Starten des Empfaengers als Xterm */ 
    if( pid_1 < 0 )
    {
                perror("Fehler Oeffnen Xterm fuer Empfaenger-Prozess");
                exit(-1);
    } 
    }
    /* Erstellen eines Sohn-Prozesses fuer den Sender */ 
    if( ... )
    {
    /* Starten des Senders als Xterm */
    if( ... < 0 ) 
    {
                perror("Fehler Oeffnen Xterm fuer Sender-Prozess");
                exit(-1);
    } 
    }
    printf("Sohn-Prozess mit PID %d generiert\n", pid_1 );
    printf("Sohn-Prozess mit PID %d generiert\n\n", pid_2 );
    for( i=0; i<2; i++ )
    {
          if(( ret_pid = wait( &status )) < 0 )
          {
                perror("Fehler beim Warten auf Ende Sohn-Prozess");
                exit(-1);
          }
          printf("Sohn-Prozess mit PID %d wurde beendet\n", ret_pid );
          printf("Status: %x\n", status >> 8 );
    }
    if( unlink("FIFO") < 0 ) 
    /* Löschen der PIPE */
    {
          perror("Fehler beim Loeschen der Pipe 'FIFO'");
          exit(-1);
    } exit(0);
    }
    Also das ist erstmal das Grundgerüst für das Programm, dass den Sender und den Empfänger erstellt. Ich hoffe, das ist soweit richtig.
    Vor allem die if(...)-Befehle bereiten mir sorgen:
    Wie erstelle ich mit fork() einen Prozess? Was ist der Unterschied zwischen dem Sender und dem Empfängerprozess? Muss das hier im VaterProgramm irgendwie deklariert werden oder ergibt sich das automatisch?

    Und dann wäre da nach "Xterm". Was ist das überhaupt?

    Ich erwarte nicht, dass Ihr mir alles fertig programmiert. Aber wenn ihr mir ein paar Impulse geben könntet oder Literatur im Internet kennt, die dieses Theme behandeln wär ich euch sehr dankbar.

    Freundlichst,

    Euer UnixTeddy
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 10.06.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
Thema:

Prozesskommunikation mit PIPES - wie funktioniert das?

Die Seite wird geladen...

Prozesskommunikation mit PIPES - wie funktioniert das? - Ähnliche Themen

  1. C : Prozesskommunikation

    C : Prozesskommunikation: Hallo zusammen, ich habe foglendes Problem ich schreibe an einem c programm das einen kind prozess erzeugen soll ( das klappt soweit auch )...
  2. Pipes und Named Pipes

    Pipes und Named Pipes: Hallo zusammen, ich habe mich gerade mit Pipes und Named Pipes zur Kommunikation zwischen Prozessen beschäftigt. Allerdings ist mit nicht ganz...
  3. Mehrere Pipes gehen nicht ?

    Mehrere Pipes gehen nicht ?: Hi allerseits, cat /dev/ttyS0 --geht cat /dev/ttyS0 | grep -v "bubu" --geht auch noch cat /dev/ttyS0 | grep -v "bubu" | grep -v...
  4. Named Pipes Probleme

    Named Pipes Probleme: Hallo! Ich versuche seit ein paar Tagen vergeblich ein Pipe zwischen zwei Prozessen aufzubauen. Das Problem ist, dass ich eine unidirektionale...
  5. cp und Pipes

    cp und Pipes: sorry wenn ich sowas grundlegendes jetzt frage, ich habe vorher das buch "Linux Grundlagen und Konzepte" konsultiet das ergab aber wie die suche...