ein Kapitel zurück                                           ein Kapitel weiter

Bis jetzt sind wir in der Lage die ID unseres Ausführenden Programms zu ermitteln. Was aber wenn wir die ID von unserem Kindprozess oder der Kindprozess die ID seiner Eltern wissen. will. Dafür gibt es 2 einfache Funktionen....

#include <sys/types.h>
#include <unistd.h>

pid_t getpid(void);    //Ermitteln des aktuellen Prozesses
pid_t getppid(void);   //Ermitteln des Elternprozesses  

Hierzu nun ein Beispiel....

/*Download:getpid1.c*/
#include <stdio.h> #include <unistd.h> #include <sys/types.h> int main(int argc, char **argv) { pid_t kind1; while(1) { switch(kind1=fork()) { case -1 : printf("Fehler bei fork()..........\n"); exit(0); case 0 : printf("Kindprozess: Mein PID ist %d\n",getpid()); printf("Kindprozess: Meine Eltern haben die PID %d\n" ,getppid()); exit(1); default : printf("Elternprozess: Ich habe folgendes Kind PID : %d\n" ,kind1); printf("Elternprozess: Meine PID lautet %d\n" ,getpid()); printf("Elternprozess: Die PID meiner Eltern lautet %d\n" ,getppid()); exit(2); } } return 0; }

Die Funktionen getpid und getppid dürften glaube ich nicht allzu schwer verständlich sein. An diesem kleinen Programmbeispiel lässt sich jetzt mal schön das Multitasking demonstrieren. Bei diesem Programm wird nicht zuerst der Kindprozess und dann der Elternprozess abgearbeitet sondern abwechselnd da wir ja 2 Prozesse ausführen. Ich denke mal wer bisher die Funktion fork, das Thema Prozesse oder Multitasking noch nicht verstanden hatte dürfte jetzt wohl ein bisschen Klarer sehen. Aber das war noch lange nicht alles. Uns fehlt noch die KONTROLLE über den Prozessen. Denn manches mal ist es nötig das ein Prozess abhängig von einem anderen ist.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf