sleep und for()
-
Hallo,
folgendes simple Programm ist gegeben:
void main(void) { fork(); sleep(20); }
Mit fork wird doch ein Kindprozess erzeugt, welcher dann an der gleichen Stelle wie der Elternprozess weiterarbeitet.
Nach meinem jetzigen Verständnis müsste dann doch aber der Kindprozess zuerst 20 Sekunden warten und anschließend der Elternprozess nochmals 20 Sekunden. Insgesamt müsste sich also eine Wartezeit von 40 Sekunden ergeben. Bei mir sind es aber nur 20 Sekunden.
Kann mir das jemand erklären?
-
Der Elternprozess wartet nicht auf das Kind.
Beide laufen parallel und getrennt weiter.Beide Funktionen gehören nicht zu Standard-C.
-
Zu was gehören sie dann?
-
POSIX
Die sind in der <unistd.h> deklariert und die gehört nicht zu Standard-C.
Kannst du gerne nachlesen. Guckst du hier: http://www.c-plusplus.net/forum/300567
-
POSIX
// god damit, 1 min ...
-
34 Sekunden
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
neueruser schrieb:
Nach meinem jetzigen Verständnis müsste dann doch aber der Kindprozess zuerst 20 Sekunden warten und anschließend der Elternprozess nochmals 20 Sekunden.
Wieso denn anschließend? Du nutzt doch offensichtlich ein Multitasking-OS.
-
Kotnascher schrieb:
neueruser schrieb:
Nach meinem jetzigen Verständnis müsste dann doch aber der Kindprozess zuerst 20 Sekunden warten und anschließend der Elternprozess nochmals 20 Sekunden.
Wieso denn anschließend? Du nutzt doch offensichtlich ein Multitasking-OS.
Außerdem kann man nicht sagen, welcher Prozess nach dem fork() zuerst dran kommt. Das ist alles vom Scheduler abhängig.