PCMasters Hardware Forum > Software > GFX, Webdesign und Programmierung > Seite 6 > [c] Fork Funktion mit ppid

Im PC Forum registrieren


Produktsuche
IDEALO-PRODUKT-SUCHE
idealo preisvergleich
PCM News & Reviews
Antwort
 
 
Alt 13.09.2010, 20:12
Threadersteller
swieh
 
Standard

[c] Fork Funktion mit ppid



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

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!

Geändert von pixelflat (13.09.2010 um 20:53 Uhr). Grund: [code] eingefügt
Alt Heute
Hardware Bot
Computer Informationen
 
Diese Werbung wird registrierten
Mitgliedern nicht angezeigt.
Werden Sie noch heute kostenlos Mitglied
auf PCMasters.de
Standard Weitere Informationen

 
Alt 13.09.2010, 20:52
pixelflat
 
Standard

Hey,
ich musste mich selbst erst mal rein denken und habe dein Beispiel mit anderer (imho sinnvollerer ) Ausgabe nachgebaut.

Ich bin mir nicht 100%ig sicher, aber ich meine das liegt an sleep(). Einfach gesagt erstellst du einen Kind-Prozess, der dann 5 Sekunden wartet. Inzwischen hat sich der Parent aber schon beendet. Wenn du nach den 5 Sekunden also die Parent-PID ausliest ist das die 1, weil der Prozess von ] adoptiert wurde (irgendeinen parent muss es geben).

PS:
hardware forum Neue Frage stellen?
Kurze Zusammenfassung der Frage:
Bitte wählen Sie eine Kategorie:
Mailadresse:
Ihre Frage:
Ihre Frage wird als Gast gespeichert. Sollte eine Antwort im Forum erfolgen, bekommen Sie diese per Email zugeschickt.


Antispam, bitte die folgende Aufgabe lösen: 
 
Um auf dieses Thema zu ANTWORTEN
bitte sich zuerst » hier kostenlos registrieren!!

Antwort

Tags: , ,

Ähnliche Tags: , ,


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[C] scanf("%c", blabla); funktioniert nicht hausel GFX, Webdesign und Programmierung 7 10.03.2010 20:42
suche netzwerktreiber Ricomendel Mainboards 4 03.06.2009 14:22
welches mainboard habe ich???? bitte helfen olli7766 Mainboards 22 05.01.2009 14:03
Soundtreiber nach formation nicht mehr auffindbar witche123 Hardware Allgemein 1 22.10.2008 17:40


Sie betrachten gerade: [c] Fork Funktion mit ppid


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.



Im PC Forum registrieren