2016-12-23 7 views
1

화면에 현재 시간을 표시하는 프로그램을 만들었습니다. 지금하고 싶은 일은 매분마다 그 시간을 업데이트하는 것입니다.C++에서 주 프로그램을 실행하는 동안 1 분이 경과했는지 여부를 백그라운드로 확인하는 방법은 무엇입니까?

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();로 표시되는 시간이 지연 또는 주를 중단하지 않고 매 분 후 업데이트해야한다는 것입니다 프로그램.

즉, 예를 들어 사용자가 프롬프트 후 몇 분 동안 아무런 입력도 제공하지 않으면 매분마다 시간이 자동으로 업데이트되고 프로세스 전체에서 프로그램은 항상 사용자의 입력을 기다리고 있습니다 (예 : main 프로그램이 평소와 같이 실행 중임). 그렇게 할 방법이 있습니까? 이 작업을 수행하는 데 교차 플랫폼 기술이 없을 수도 있습니다. 그래서 windows os에 대해이 작업을 수행하려고합니다.

EDIT : 현재 커서 위치 또는 사용자가 입력 한 텍스트 (아직 입력하지 않은)를 복원 한 후에는 업데이트 할 필요가 없습니다.

+0

cin 기반 입력을 사용하여이 작업을 수행 할 수 없습니다. – SergeyA

+0

getche() 함수 ( 라이브러리 함수)를 통해 입력을 받았다고 가정하면 어떻게 할 수 있습니까? –

+0

Nope. 키를 누를 때까지 프로그램을 계속 차단합니다. – SergeyA

답변

1

당신은 alarm() 함수를 사용할 수 있습니다.이 함수는 시간이 만료되면 SIGALRM 신호를 보냅니다.

응용 프로그램에는 해당 신호에 대한 신호 처리기 만 있으면됩니다.