Sich wiederholendes Programm ohne Endlosschleife?
-
Hallo zusammen,
ich hab ein kleines Programm geschrieben, welches überprüft ob eine Datei vorhanden ist und in Abhängigkeit davon eine andere umbenennt.
Diese Kontrolle soll alle 5 Sekunden stattfinden.Funktioniert auch, jedoch ist mein Prozessor zu 97% ausgelastet oO
Wohl da es eine Endlosschleife ist. Das ganze ist eine Konsolenanwendung.Hat jemand ne Idee wie ich das ganze anders lösen könnte?
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <windows.h>
#include <time.h>using namespace std;
int main(){
/*
//Verstecken der Konsole
HWND hwnd = FindWindow("ConsoleWindowClass",NULL);
ShowWindow(hwnd,SW_HIDE);
//cout << "Oo\n";
*/int i = 0;
int temp = 0;while(i< 2) {
temp = clock() + 5000;while (clock() < temp) {}
//hier wird geprüft ob .pdf vorhanden istifstream fin("C:\\fax.pdf");
if (fin)
{
//cout << "File found" << endl;
fin.close();//hier wird geprüft ob .txt vorhanden ist
ifstream fin("C:\\fax.txt");
if (fin)
{
//cout << "File found" << endl;//sind .pdf UND .txt vorhanden, dann wird .txt in .fax umbenannt.
fin.close();
rename("C:\\fax.txt", "C:\\fax.fax");
}}
else
{
//cout << "Could not find file!" << endl;
}}
}
-
Da du sowieso windows.h benutzt, pack in deine Schleife einfach ein Sleep(100) 'rein, dann wird deine CPU auch nicht so heiß.

-
Du erzeugst 100% CPU Last dadurch, dass du ununterbrochen prüfst, ob bereits 5 Sekunden vergangen sind.
Die Win32 API bietet die Funktion Sleep an, mit der sich Prozess für eine Anzahl von Millisekunden schlafen legt und die CPU an andere Prozesse abgibt. Wie die Funktion für andere Betriebssysteme heisst weiß ich nicht, sie existiert aber mit Sicherheit.
-
Danke erst mal für die Antworten!
Obwohl ich die windos.h drinne habe aktzeptiert er sleep(); nicht....
...not declared in this scope..
-
C/C++ sind case sensitive...
-
DANKE!
So einfach kanns manchmal sein!
Läuft.