2016-12-23 7 views
1

Я создал программу, которая отображает текущее время на экране. Теперь я хочу обновить это время после каждой минуты.Как проверить в фоновом режиме, прошла ли минута во время выполнения основной программы в C++?

dateAndTime now; //created an object of a custom class dateAndTime 

cout << "\n\t\t\t\t\t\t" << now.hour() << ':' << now.minute() << endl; 
cout << "CASH MANAGER" << "\n"; 
cout << "1. Add cash" << "\n"; 
cout << "2. Withdraw cash" << "\n\n"; 

int ch; 
cout << "Enter a number 1 or 2: "; 
cin >> ch; 

Давайте предположим, что время обновляется через следующий процесс:

if (time(0) == now.epochTime() + 1) 
    now.setTime(time(0)); 

Теперь, что я хочу сделать то, что время отображается как now.hour() << ':' << now.minute(); следует обновлять через каждую минуту без задержки или прерывания основного программа.

Это означает, что если пользователь, например, не вводит какие-либо данные в течение нескольких минут после запроса, время должно автоматически обновляться после каждой минуты, и в течение всего процесса программа всегда ждет ввода пользователя (т.е. программа работает как обычно). Есть ли способ сделать это? Я знаю, что для этого не может быть кросс-платформенной техники. Поэтому я просто хочу сделать это для windows os.

EDIT: восстановление текущей позиции курсора или любого написанного пользователем текста (который еще не был введен) не требуется после обновления.

+0

Вы не сможете сделать это, используя вход на основе cin. – SergeyA

+0

скажем, я беру ввод через функцию getche() (), возможно ли это? –

+0

Nope. Все еще будет блокировать вашу программу, пока не будет нажата клавиша. – SergeyA

ответ

1

вы можете использовать функцию alarm(), которая по истечении времени отправит сигнал SIGALRM.

Приложение просто должно иметь обработчик сигнала для этого сигнала.

 Смежные вопросы

  • Нет связанных вопросов^_^