Wir müssen das Ergebnis der folgenden C-Programm sagen:Ergebnis eines kleinen C-Programms
main()
{
int pid, k, som;
som = 0; k = 2;
pid = fork();
if(pid == 0)
k=5;
else
wait(0);
for(int i = 1; i <= k; i++)
som += i;
printf("%d", som);
}
Meine erste Erwartung 3. Wenn eine der Gabel Anruf getätigt wird, wird der Speicher des Prozesses kopiert, und beide Programme laufen. Der Kindprozess wird dann ausgeführt, aber k ist immer noch gleich 2. Am Ende führt er also 1 + 2 = 3 aus;
Aber wenn dieses Programm ausgeführt wird, gibt es 153 aus. Ich habe nicht den nächsten Hinweis, warum es das ausgibt.
Kann jemand sagen warum?
offcourse. Habe total vergessen, dass beide Prozesse Output produzieren. – Ikke
Ich glaube, Sie haben Recht. Sie können schnell feststellen, ob dies der Fall ist, indem Sie die letzte Zeile des Programms in printf ändern ("% d \ n", som); – LBushkin