#include <stdio.h> #include <unistd.h> #include <sys/time.h> #include <stdint.h> int wait_a_while (useconds_t interval) { int num_times = 0; int return_value = 1; struct timeval start_time; gettimeofday(&start_time, NULL); uint64_t target = start_time.tv_sec * 1000000 + start_time.tv_usec + interval; while (1) { num_times++; return_value = usleep (interval); if (return_value != 0) { struct timeval now; gettimeofday(&now, NULL); interval = target - now.tv_sec * 1000000 + now.tv_usec; } else break; } return num_times; } int main (int argc, char **argv) { printf ("stop here in main.\n"); int num_times = wait_a_while (argc * 1000); printf ("Done, took %d times.\n", num_times); return 0; }