Я хочу запустить программу на C в течение определенного времени.По истечении этого времени программа должна быть прекращена.Я искал некоторые документы об этом, но многие из них используют функцию sleep
.Я не хочу использовать это.Я хочу проверить текущее время, превышает ли оно целевое время в бесконечном цикле.
Например, приведенный ниже код, мое целевое время равно 5, а когда продолжительность времени выполнения больше 5, программа должнабыть завершен.
Но код вызывает бесконечный цикл.Как я могу решить эту проблему?
void thread_handler(union sigval sv) {
char *s = sv.sival_ptr;
/* Will print "5 seconds elapsed." */
puts(s);
}
int main(void) {
char info[] = "5 seconds elapsed.";
timer_t timerid;
struct sigevent sev;
struct itimerspec trigger;
struct itimerspec triggerAfter;
memset(&sev, 0, sizeof(struct sigevent));
memset(&trigger, 0, sizeof(struct itimerspec));
sev.sigev_notify = SIGEV_THREAD;
sev.sigev_notify_function = &thread_handler;
sev.sigev_value.sival_ptr = &info;
timer_create(CLOCK_REALTIME, &sev, &timerid);
trigger.it_value.tv_sec = 5;
timer_settime(timerid, 0, &trigger, NULL);
timer_gettime(timerid,&trigger);
while (1) {
if ((int)trigger.it_value.tv_sec > 5) { //checking the current time is bigger than the target time, it it is then exit from the program
timer_delete(timerid);
exit(0);
}
}
}