Wie wert an Vaterprozess übergeben?

Diskutiere Wie wert an Vaterprozess übergeben? im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hi, ich habe folgendes Problem. Ich weis nicht genau wie ich z.B. das Ergebnis einer Berechnung die in einem Kindprozess durchgeführt wurde an...

  1. iv1u2

    iv1u2 Grünschnabel

    Dabei seit:
    17.01.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    ich habe folgendes Problem. Ich weis nicht genau wie ich z.B. das Ergebnis einer Berechnung die in einem Kindprozess durchgeführt wurde an den Vaterprozess(Elternprozess) übergebe?

    Ich möchte einen Kindprozess erzeugen, in diesem seine eigene pid mit 2 multiplizieren, den Kindprozess eigenständig terminieren und das ergebnis dieser Berechnung im elternprozess mit printf() ausgeben.

    Sagen wir mal ich habe folgendes:

    int pid1

    pid1=fork();

    if(pid<0) exit(-1);

    if(pid1==0)
    {
    int a;
    a= getpid() * 2;
    }
    if(pid>0)
    {
    //hier würde ich dann gerne das resultat von a aus dem Kindprozess ausgeben...nur wie??
    }
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    man 2 pipe

    Gruss
    Heiko
     
  4. iv1u2

    iv1u2 Grünschnabel

    Dabei seit:
    17.01.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Danke, hab mir jetzt ein paar Seiten angeschaut, wäre das so richtig?


    int pid1;
    int buffer[1];
    int fd[2];

    pipe(fd);
    pid1=fork();

    if(pid<0) exit(-1);

    if(pid1==0)
    {
    int a;
    a= getpid() * 2;
    write(fd[1],a,1);
    exit(0);
    }
    if(pid>0)
    {
    //ist dieser code jetzt richtig?

    read(fd[0],buffer,1);
    printf("\n Die doppelte PID des Kindprozesses lautet: %i \n",buffer);


    }
     
  5. #4 hwj, 17.01.2007
    Zuletzt bearbeitet: 17.01.2007
    hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    Der Vater macht üblicherweise noch ein "wait(NULL)" bevor er endet, und direkt nach dem fork() schließt jeder Prozess noch das "Ende" der Pipe was er nicht benötigt - außerdem hast Du einmal pid und pid1 benutzt, ein "pid" reicht ...
    Code:
    if ((pid = fork()) < 0) 
        exit(-1);
    if (pid==0) {
       close(fd[0]);
       ...
    
    } else {
        close(fd[1]);
        ...
    
        wait(NULL);
    }
    
    Heiko
     
  6. iv1u2

    iv1u2 Grünschnabel

    Dabei seit:
    17.01.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    wäre es vielleicht auch möglich das der kindprozess über eine als extern deklarierte Variable, welche im elternprozesse erzeugt wurde, einen Wert an den Elternprozess zurück liefert?
     
  7. hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    Nein, fork() muß Du Dir so vorstellen, das eine komplette Kopie des aktuellen Prozesses gemacht wird. Jeder kann mit seinen Variablen machen was er will.

    pipe() nutzt genau dieses aus, das OS stellt einen ''" File-Handle "" zur Verfügung, der hinterher in beiden Prozessen geöffnet ist, daher können die dann Nachrichten austauschen.

    pipe() kann man ja auch zweimal aufrufen (mit verschiedenen Variablen), so das man einen Hin- und einen Rückkanal hat, allerdings muß man dann aufpassen, das nicht beide lesend blockieren und sich nichts mehr tut.

    Heiko
     
  8. iv1u2

    iv1u2 Grünschnabel

    Dabei seit:
    17.01.2007
    Beiträge:
    4
    Zustimmungen:
    0
    ok, dann kommt für mich nur pipe in Frage. Vielen Dank für die Antworten.
     
Thema:

Wie wert an Vaterprozess übergeben?

Die Seite wird geladen...

Wie wert an Vaterprozess übergeben? - Ähnliche Themen

  1. Mozilla bewertet Videoanrufsysteme

    Mozilla bewertet Videoanrufsysteme: Mozilla hat in Zeiten der Corona-Krise eine Bewertung von 15 beliebten Videoanrufsystemen vorgenommen. Weiterlesen...
  2. OpenSSH erschwert Angriffe auf gespeicherte Schlüssel

    OpenSSH erschwert Angriffe auf gespeicherte Schlüssel: Um Prozessor und Seitenkanalattacken auf die im Speicher abgelegten Schlüssel besser unterbinden zu können, wird OpenSSH künftig in der Lage sein,...
  3. Zeilen behalten, die Werte in einem bestimmten Bereich enthalten

    Zeilen behalten, die Werte in einem bestimmten Bereich enthalten: Hallo, ich habe eine Datei mit 4 Spalten, in denen Zahlenwert liegen. Ich möchte gerne alle Zeilen behalten, bei denen der Wert in der dritten...
  4. Zeilen aus Txt-Datei entfernen, wenn eine Spalte einen bestimmten Wert enthält

    Zeilen aus Txt-Datei entfernen, wenn eine Spalte einen bestimmten Wert enthält: Hallo, ich habe folgendes Problem. Ich erstelle mit Hilfe einer Shell eine Liste, die vier Spalten mit Zahlenwerten enthält. Wenn die letzte...
  5. gnu parallel Zeichen lesen und Wert berechnen

    gnu parallel Zeichen lesen und Wert berechnen: Hallo, ich würde gerne "GNU parallel" dazu nutzen, aus einer Liste von Zeichen, die sich in einer Datei befinden, einen MD5 Hash zu berechnen....
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden