2016-07-26 2 views
-1

시스템의 암호를 변경하기 위해 C++로 프로그램을 만들었고 매 2 시간마다 실행하고 싶습니다. 그런 다음 C++에서 두 가지 선택으로 끝납니다. 하나는 Sleep(ms)입니다. 다른 스레드는 최근 스레드 lib this_thread::sleep_for(2h)[ 2h using std::chrono_literals]을 사용하고 있습니다.오랫동안 exe를 일시 중지하는 가장 좋은 방법은 무엇입니까

내가 걸어 다녔던 것은 의심 할 여지없이 exe이 우리가 원하는 방식대로 작동 할 것인가, 내가 언급 한 것보다 더 좋은 방법일까요?

또한 exe을 Windows 서비스로 사용할 계획입니다.

+0

무엇이 당신의 질문입니까? 어떤 문제를 해결하려고합니까? 이미 해결책이있는 것 같습니까? –

+0

나는 모든 사람이 최선을 다해 궁극적으로 선택한 해결책인지 확인하고 싶다. –

+0

@ 리차드 _G 귀하의 접근 방식은 일반적으로 모든 사람이 최고로 선택하지는 않습니다 *. – user2079303

답변

2

내가 언급 한 것보다 더 좋은 방법이 있습니까?

예.

나는 프로그램을 일시 중지하지 말 것을 제안합니다. 단순히 일을하고 나가십시오.

예약 부분을 별도의 프로그램으로 추출하십시오. 이 스케쥴러는 이미 mostoperatingsystems에 있기 때문에 작성할 필요조차 없습니다.

+0

user2079303 예약 된 작업 없음, 시스템 정보로 실행되는 사용자 정보 중 일부를 무시하여 사용자 암호를 변경하므로 시스템 작업으로 실행되고 작업으로 실행되는 것보다 높은 권한을 가지기를 바랍니다 –

2

오랜 기간 동안 주기적으로 실행해야하는 작업이있는 경우 프로그램이나 스크립트를 사용해야하며 작업과 종료를 수행하고 대기를 처리하는 스케줄러를 사용해야합니다. 고려해야 할 질문은, 예를 들어,도 위치 :

  • 당신이 당신의 작업의 몇 가지를 허용 않습니다 (예를 들면, 재부팅 예정) 예약 된 시간에 놓친 경우 당신이 당신의 작업을 시작해야합니까 완료에 걸리는 시간이 대기 기간보다 길면 즉시 실행하십시오.

직접하려는 것은 사용자가 직접 스케쥴러를 구현하는 것입니다. 이것이 원하는 경우, sleep은 posix 함수이고 chrono::thread::sleep_for은 크로스 플랫폼이므로 두 번째 것을 사용하는 것이 좋습니다.

그러나 일반적으로 스케줄러를 구현하지 않는 것이 좋습니다.

관련 문제