Programm x Sekunden laufen lassen
-
Wenn du während dessen noch etwas tun möchtest musst du hochzählen in der Programmierung mit Standard-C. Das ist zwar kein Problem aber sehr prozessorlastig. Deswegen warte am besten je nach Dauer der Zeitspanne die dein Programm laufen soll etwas damit der Prozessor auch noch Zeit für andere Threads hat.
Wenn du eventbasierte Programmierelemente zur Verfügung hast kannst du auch einen Timer installieren, meistens musst du dich dann aber auf ein bestimmtes Betriebssystem festlegen - was du imho jetzt tun solltest.
MfG SideWinder
-
das war jetzt aber nicht gerade konkret, SideWinder!
-
DrGreenthumb schrieb:
das war jetzt aber nicht gerade konkret, SideWinder!
...und ohne Quelltext!
-
so eine schweinerein aber auch! Side, ich bin wirklich zutiefst erschüttert!
-
OK, dann geb ich jetzt mal ein Beispiel ohne Erklärung:
#include <pthread.h> #include <stdio.h> struct timer_thread_ctl { int interrupt; unsigned seconds; }; void *timer_thread(void *param) { struct timer_thread_ctl *ctl = param; sleep(ctl->seconds); ctl->interrupt = 1; } int main(void) { pthread_t timer_th; struct timer_thread_ctl th_ctl = { 0, 5 }; pthread_create(&timer_th, NULL, timer_thread, &th_ctl); while(!th_ctl.interrupt) { puts("Hallo!"); sleep(1); } return 0; }
-
Warum nicht einfach beim Programmstart die Zeit auslesen, speichern und dann regelmäßig die Zeit wieder abfragen und Differenz vergleichen?
-
@ Drucktaste:
Genau vor dem Problem steh ich. Kann mir vielleicht jemand erklären, wie man Zeit speichert und dann regelmäßig die Differenz vergleicht? Denke das sollte mit einem Array gehen, oder?
-
time_t anfang; anfang = time(0); time_t now = time(0); int zeitspanne; // zeit in secunden while(difftime(anfang,now)<zeitspanne) { now=time(0); // programmcode }
*HOPING that that will work*
mfG (c)h
-
Ich würde mich hier auf mein Betriebssystem verlassen und Funktionen von diesem aufrufen.
In Windows wäre dies ein einfaches SetTimer (x); und dann einfach auf die WM_TIMER Nachricht warten, wenn diese kommt beendest du das Programm, dann ist es nur x Sekunden gelaufen.
-
@ chille07
Danke, du hattest nur einen kleinen Fehler. Es müsste difftime(now,anfang) heissen.
-
Auf welche Bibliothek greift denn sleep zurück..... ?
Der verlangt bei mir irgendeine Bibliotheks-Datei und ich hab da keine Ahnung, welche ich davon nehmen muss bzw soll.
-
cHillb3rT schrieb:
Auf welche Bibliothek greift denn sleep zurück..... ?
Der verlangt bei mir irgendeine Bibliotheks-Datei und ich hab da keine Ahnung, welche ich davon nehmen muss bzw soll.
windows:
Sleep schreibt man groß.
Die Headerdatei heisst <windows.h>mfG (c)h
-
pippo schrieb:
@ chille07
Danke, du hattest nur einen kleinen Fehler. Es müsste difftime(now,anfang) heissen.
ja... stimmt!
thanx (c)h