Wie wert an Vaterprozess übergeben?

Dieses Thema im Forum "C/C++" wurde erstellt von iv1u2, 17.01.2007.

  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

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    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. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. 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
     
  9. 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. Free Software Foundation bewertet Codehosting-Dienste

    Free Software Foundation bewertet Codehosting-Dienste: Die Free Software Foundation (FSF) hat Bewertungen nach den selbst definierten Richtlinien für mehrere Codehosting-Dienste herausgegeben....
  2. Mit bash Skript bestimmte Werte aus Tabelle lesen

    Mit bash Skript bestimmte Werte aus Tabelle lesen: Hallo! Ich beschäftige mich erst seit Kurzem mit bash und bin deshalb noch nicht so fit darin. Und nun habe ich schon ein kleines Problem und...
  3. Logs von debsecan, tiger, chkrootkit richtig auswerten.

    Logs von debsecan, tiger, chkrootkit richtig auswerten.: Hallo! ich habe debsecan drüber laufen lassen und der zeigt mir einen Haufen an low/medium/high urgency an, mit oder ohne remotly exploitable....
  4. Wertebereich ersetzen mit sed

    Wertebereich ersetzen mit sed: Hallo Forenmitglieder, ich habe ein kleines Problem mit sed und zwar möchte ich in einer Datei mit mehren Spalten und Zeilen das Vorkommen eines...
  5. Kernel-Patch erschwert Rowhammer-Angriff

    Kernel-Patch erschwert Rowhammer-Angriff: Ein Patch wird aller Voraussicht nach in der kommenden Kernel-Version verhindern, dass Anwender den physischen Speicher einer Anwendung erfragen...