for(;;) if(warunek) break; else Sleep(5000); // sprawdza co 5 sek
albo funkcje API:
WaitForSingleObject() oraz kilka innych z funkcją tą związane w zależności od tego co sprawdzasz.
Pod unux’em też jest sleep() tylko z malej litery i też jest odpowiednik WaitForSingleObject() tylko nie pamiętam jak się nazywa i nie mam teraz dostępu do man’a aby sprawdzić.
Podaj dokładniejszy opis problemu, może jakiś kod, który już masz? Możesz użyć albo sygnału albo sleep, inne rozwiązanie na razie nie przychodzi mi do głowy.
W windows’ach możesz ustawić callback’a na zmiane danych systemowych. Jeżeli zaś szukasz wykonania czegoś o określonym czasie, to może użyj TTimer. Może najpierw powiesz przynajmniej o który system ci chodzi, windows czy unix?
Oczywiście Windows zaraz poczytam o tym o czym mówił 13tySmok. Mam w planach napisać sobie programik (konsolowy) który dawałby możliwość np zamykania systemu o określonej godzinie lub warunku
Z kodu który pokazałeś nie zbyt wynika czego chcesz osiągnąć. Zakładam że po sygnale dźwiękowym użytkownik ma nacisnąć ESC, jeżeli nie naciśnie ESC to znowu dostaję dźwięk, jeżeli założenie jest słuszne to:
#include
#include
using namespace std;
int main ()
{
for(;;)
{
cout<<'\a'; // niema co dawać ciąg znaków jeżeli drukujesz jeden znak.
/*
while(kbhit())
{
int nZnak=getch(); // zmienne najlepiej deklarować tam gdzie potrzebne, wystrzegając się globalnych.
if(nZnak==27) return 0; // po if nie jest potrzebny średnik jeżeli ma jedną instrukcje to nie potrzebne również klamerki
}
*/
while(kbhit()) if(getch()==27) return 0; // wszystko co w komentarze można zapisać właśnie tak
_sleep(500);
} // po for nie jest potrzebny średnik
}
A może ci wystarczy jedynie cin.ignore(); ? Napisz dokładnie co chcesz osiągnąć.
#include
int main ()
{
for(;;)
{
putchar('\a'); // nie należy mieszać asynchroniczne i synchroniczne we/wy.
_sleep(500); // sleep przed oczekiwaniem na naciśnięcie aby użyszkodnik zdążył zareagować
while(kbhit()) if(getch()==27) return 0;
}
}
Ponieważ w czasie tych pół sekundy użyszkodnik mógł wcisnąć więcej niż jeden przycisk. Więc jeżeli zamienisz na if a użytkownik wciśnie 3 przyciski (nie ESC) a potem ESC to dostanie jeszcze 3 razy dźwięk zanim program zareaguje na ten ESC.