#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <signal.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
using namespace std;
time_t clocktime() {
/*
time_t t= time(NULL);
std::cout<<" s秒级 ----:";
std::cout<<t<<endl;
*/
struct timeval tv;
gettimeofday(&tv, NULL);
std::cout << "10e6 微秒级s ----:";
std::cout << tv.tv_sec << "s," << tv.tv_usec << "微秒" << endl;
}
static int count = 0;
static struct itimerval oldtv;
void set_timer()
{
struct itimerval itv;
itv.it_interval.tv_sec = 0;
itv.it_interval.tv_usec = 200000;
itv.it_value.tv_sec = 0;
itv.it_value.tv_usec = 100000;
setitimer(ITIMER_REAL, &itv, &oldtv);
}
void signal_handler(int m)
{
count ++;
printf("%d\n", count);
clocktime();
usleep(20000);
}
int main()
{
signal(SIGALRM, signal_handler);
set_timer();
while(count < 10000);
exit(0);
return 1;
}
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <signal.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
using namespace std;
time_t clocktime() {
/*
time_t t= time(NULL);
std::cout<<" s秒级 ----:";
std::cout<<t<<endl;
*/
struct timeval tv;
gettimeofday(&tv, NULL);
std::cout << "10e6 微秒级s ----:";
std::cout << tv.tv_sec << "s," << tv.tv_usec << "微秒" << endl;
/*
struct timespec tn;
cout<<"----";
clock_gettime(CLOCK_REALTIME, &tn);
std::cout<<"10e9 纳秒级s ----:";
std::cout<<tn.tv_sec<<"s,"<<tn.tv_nsec<<"纳秒"<<endl;
struct timespec current_time,last_time;
double aa=1.1234567891;
printf("double %.12f\n",aa);
cout<<"----";
clock_gettime(CLOCK_REALTIME, &last_time);
sleep(1);
std::cout<<last_time.tv_sec<<","<<last_time.tv_nsec<<endl;
clock_gettime(CLOCK_REALTIME, ¤t_time);
std::cout<<current_time.tv_sec<<","<<current_time.tv_nsec<<","<<pow(10,-9)<<endl;
double delta_time = (current_time.tv_sec - last_time.tv_sec)+
(current_time.tv_nsec - last_time.tv_nsec)*pow(10,-9);
printf("double %.12f\n",delta_time);
*/
}
void timer_handler(int signum) {
clocktime();
printf("trigger...\n");
}
int main() {
printf("ok");
struct sigaction sa;
struct itimerval timer;
/* Install timer_handler as the signal handler for SIGVTALRM. */
memset(&sa, 0, sizeof(sa));
sa.sa_handler = &timer_handler;
sigaction(SIGVTALRM, &sa, NULL);
/* Configure the timer to expire after 100 msec... */
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 100000;
/* ... and every 100 msec after that. */
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 100000;
/* Start a virtual timer. It counts down whenever this process is
executing. */
setitimer(ITIMER_VIRTUAL, &timer, NULL);
/* Do busy work. */
while (1) {
}
return 0;
}