2016-12-23 79 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这样做。

编辑:恢复当前光标位置或用户(尚未输入)的任何书面文本更新后不需要。

+0

你无法使用基于cin的输入做到这一点。 – SergeyA

+0

假设我通过getche()函数(库函数)进行输入,那么它有可能吗? –

+0

没有。仍然会阻止你的程序,直到按下键。 – SergeyA

回答

1

您可以使用alarm()函数,该函数将在时间到期时发送一个信号SIGALRM

应用程序只需要有一个该信号的信号处理程序。

相关问题