在linux下写一个数据库监控程序,用的纯c,操作mysql用的是mysql自带的c API:mysql_init,mysql_real_connect,mysql_query...,定时监控用的是信号量。代码如下:
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
static int count = 0;
static struct itimerval oldtv;
void set_timer()
{
struct itimerval itv;
itv.it_interval.tv_sec = 1;
itv.it_interval.tv_usec = 0;
itv.it_value.tv_sec = 1;
itv.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &itv, &oldtv);
}
void signal_handler(int m)
{
count ++;
printf("%d\n", count);
}
int main()
{
signal(SIGALRM, signal_handler);
set_timer();
while(count < 10000);
exit(0);
return 1;
}
数据表不到1个G,然后程序运行起来后cpu一直处于98%~~100%之间
while(count < 10000); 这个一直在跑 cpu自然就高了 可以usleep(100);