C++ Slepp (Pause) unter Linux?
-
Moin,
ich habe ein Tool geschrieben, welches ein Verzeichnis mit einer Endlosschleife (while(true)) durchsucht und Dateien weiter verarbeitet.. Das Tool muss unter Linux laufen, ist als Dienst eingebunden und lauft auch soweit ganz gut.
Nun besteht das Problem, dass dieses nette Tool alles an CPU last verbaucht, was es bekommen kann. Also dachte ich.. wäre ne Pause von nen paar Millisekunden zwischen den Durchläufen der While ganz angebracht. Nur wie geht das unter Linux. Habe bei Google bisher nix passendes finden können.
sleep() -- geht nur unter Windows
system("pause") -- bringt nix
getchar () -- genauso wenig
ne weitere Schleife -- bringt mich net weiter..kann mir bitte jemand sagen, ob unter Linux eine Pause überhaupt möglich ist, oder ob jemand ne Idee hat.
Danke Marcel
-
-
Sleep() (mit großem S) gibt's unter Windows - Linux-Systeme haben man: sleep(3) und man: usleep().
-
ja stimmt so gehts das wunderbar! danke ..
nur schade, dass mein Programm daduch nicht mehr Betriebssytem-unabhängig ist.
Vielen Dank
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ 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.
-
fettyteddy2 schrieb:
nur schade, dass mein Programm daduch nicht mehr Betriebssytem-unabhängig ist.
Du könntest es zumindest mit boost::thread portabel machen. (Aber dann müsste der (Forums-)Thread zurück nach C++ verschoben werden :D)
-
CStoll schrieb:
Sleep() (mit großem S) gibt's unter Windows
Würde mir jemand sagen, wo diese Funktion steht?
-
|M| schrieb:
CStoll schrieb:
Sleep() (mit großem S) gibt's unter Windows
Würde mir jemand sagen, wo diese Funktion steht?
Wie wär's mit der MSDN?
@teddy: Plattform-übergreifend könntest du nur per busy-waiting "schlafen":
void my_sleep(unsigned int millis) { clock_t ticks = millis*CLOCKS_PER_SEC/1000, start=clock(); while(start+ticks!=clock()); }
Oder du wrappst je nach System auf die "richtige" Sleep-Funktion:
void my_sleep(unsigned int millis) { #ifdef _WIN32 Sleep(millis) #else usleep(1000*millis); #endif }