+#include <signal.h>
#include <stdio.h>
+#include <stdlib.h>
#include <time.h>
+#include <unistd.h>
+#include <stdint.h>
-main ()
+volatile int gotit = 0;
+
+static void
+alarm_handler (int signal)
+{
+ gotit = 1;
+}
+
+
+int
+main (int argc, char ** argv)
{
- volatile int i;
- double t1, t2, t;
+ clock_t start, stop;
- t1 = (double) clock ();
- for (i = 0; i < 100000; ++i) ;
- t2 = (double) clock ();
+ if (signal(SIGALRM, alarm_handler) == SIG_ERR)
+ {
+ perror ("signal");
+ exit (1);
+ }
+ alarm(1);
+ start = clock ();
+ while (!gotit);
+ stop = clock ();
- t = (t2 - t1) / ((double) CLOCKS_PER_SEC);
- printf ("%f - %f = %f\n",t2,t1,t);
+ printf ("%jd clock ticks per second (start=%jd,stop=%jd)\n",
+ (intmax_t) (stop - start), (intmax_t) start, (intmax_t) stop);
+ printf ("CLOCKS_PER_SEC=%jd, sysconf(_SC_CLK_TCK)=%ld\n",
+ (intmax_t) CLOCKS_PER_SEC, sysconf(_SC_CLK_TCK));
return 0;
}