programm geht bei 2 identischen else if bedingungen in die 2.
-
hallo,
ich steh grad nen bisschen aufm schlauch:
normal wird immer die erste bedingung genommen, die passt.
hier nimmt er aber die 2.
(linux in Vbox, gcc, intel duo)#include <stdio.h> #include <stdlib.h> int main() { int v1 = 0, v2 = 0, v3 = 0, pid1, pid2, pid3; pid1 = fork(); //bei dem prozess gehts unten in die 2. else if pid2 = getpid(); v2++; pid3 = fork(); if (pid1 == pid3) { printf("[if (pid1 == pid3)]pid1 %d, pid2 %d, pid3 %d\n",pid1, pid2, pid3); v1++; v2++; } else if (pid2 == getppid()) { printf("[1. else if (pid2 == getpid())]pid1 %d, pid2 %d, pid3 %d\n",pid1, pid2, pid3); v1++; v3++; sleep(1); } else if (pid2 == getpid()) { printf("[2. else if (pid2 == getpid())] pid1 %d, pid2 %d, pid3 %d\n",pid1, pid2, pid3); v2++; wait(NULL); if (pid1 > 0) { printf("[if(pid1>0)] pid1 %d, pid2 %d, pid3 %d\n",pid1, pid2, pid3); v3++; wait(NULL); } } printf("%d %d %d\n", v1, v2, v3); }
gruß,
rumblehat sich erledigt,
. da hat sich doch ein p versteckt ^^
-
getppid() != getpid()
EDIT: Ach sorry, du hattest die Lösung ja schon...
-
_matze schrieb:
getppid() != getpid()
Und daß du eine Funktion aufrufst die gar nicht
existiert, teilt dir der Compiler gar nicht mit?Mein Gott, bin ich froh, auf Java umgestiegen zu sein!
-
Ich glaube auch, dass du bei Java besser aufgehoben bist