Ich habe ein wenig mit Linux C programmiert. Es geht darum, dass man 4 Prozesse mit der fork Funktion hintereinanderreiht. Erdt kommt Parent dann Child, dann das Child vom Child undsoweiter. Hier ist der Queltext mit Shell- Ausgabe
Hallo User!!
PID: 2830,PPID: 2097
PID: 2831,PPID: 2830
Ich muss weg!!
PID: 2832,PPID: 1
PID: 2833,PPID: 2832
PID: 2833,PPID: 1
Tschüss User!!
PID: 2830,PPID: 2097
Mich wundert, dass zweimal bei der Parent PID 1 steht, da müsste doch 2831 bzw. 2832 stehen. An der blau markierten Zeile erkennt man, dass es ja schon mal geklappt hat.
Hat das was mit init zu tun?
Ach ja ich habe dafür getpid und getppid verwendet!
Code:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
main()
{
int pid1;
int pid2;
int pid3;
pid1=fork();
if (pid1>0)
{
printf("Hallo User!!\n");
printf("PID: %d,PPID: %d\n",getpid(), getppid());
sleep(10);
printf("Tschüss User!!\n");
printf("PID: %d,PPID: %d\n",getpid(), getppid());
}
if (pid1==0)
{
printf("PID: %d,PPID: %d\n",getpid(), getppid());
pid2=fork();
if (pid2==0)
{
printf("Ich muss weg!!\n");
printf("PID: %d,PPID: %d\n",getpid(), getppid());
pid3=fork();
if (pid3==0)
{
printf("PID: %d,PPID: %d\n",getpid(), getppid());
sleep(5);
printf("PID: %d,PPID: %d\n",getpid(), getppid());
}
}
}
return 0;
}
Hallo User!!
PID: 2830,PPID: 2097
PID: 2831,PPID: 2830
Ich muss weg!!
PID: 2832,PPID: 1
PID: 2833,PPID: 2832
PID: 2833,PPID: 1
Tschüss User!!
PID: 2830,PPID: 2097
Mich wundert, dass zweimal bei der Parent PID 1 steht, da müsste doch 2831 bzw. 2832 stehen. An der blau markierten Zeile erkennt man, dass es ja schon mal geklappt hat.
Hat das was mit init zu tun?
Ach ja ich habe dafür getpid und getppid verwendet!
Zuletzt bearbeitet von einem Moderator: