linux 字符界面 下的一个 简单计时器 [李园7舍_404]

来源:互联网 发布:培训机构网站asp源码 编辑:程序博客网 时间:2024/06/06 20:53

 刚学完C语言,大概那个时候是显着没事干。年轻的时候真是....好不容易将其翻出来了,就当是记忆下。

/************************************************************* * Author:              misskissc. * School:              Southwest university. * Last Modified on     2. June. 2012. * Function describe:   show time to shell(simple interface), *                      when input 'q' or ctrl+C timer quit. * ***********************************************************/ //Head files.#include <sys/time.h>#include <signal.h>#include <curses.h>#include <stdlib.h>#include <stdio.h>#include <time.h> //Constant macro.#define QUIT_TIMER      'q'#define SECOND_FULL     59#define MINUTE_FULL     59#define HOUR_FULL       23#define SHOW_TIME_COORDINATE_Y  10#define SHOW_TIME_COORDINATE_X  10  //Data of time.typedef struct _time{        int t_h;        int t_m;        int t_s;}hmstime; //Example of hmstime.hmstime *c_time; //Functions decalrations.void counttime(void);void showtime(void);void addcurses(void);void dealtime(int signo); /*Main: show time to shell*/int main(void){        addcurses();         int key_in;        hmstime *bp_time;         //Allocate RAM for pointer.        c_time  = (hmstime*)malloc( sizeof(hmstime) );        bp_time = (hmstime*)malloc( sizeof(hmstime) );         //First initialize 0.        c_time->t_h     = 0;        c_time->t_m     = 0;        c_time->t_s     = 0;         counttime();        while(1);         getch();        endwin();        return 0;}/* Dfine function:      initicurses. * Function describe:   Set   attribute to curses.*/void addcurses(void){        initscr();} /* Dfine function:      showtime. * Function describe:   print time on shell.*/void dealtime(int signo){        //Reset clock.        if(     c_time->t_h == HOUR_FULL   &&                   c_time->t_m == MINUTE_FULL &&                   c_time->t_s == SECOND_FULL      ){                 c_time->t_h     = 0;                c_time->t_m     = 0;                c_time->t_s     = 0;        }else if( c_time->t_m == MINUTE_FULL &&                   c_time->t_s == SECOND_FULL    ){                 //Hour++.                c_time->t_h++;                c_time->t_m     = 0;                c_time->t_s     = 0;        }else if(c_time->t_s == SECOND_FULL){                 //Minute++.                c_time->t_m++;                c_time->t_s     = 0;        }else if(c_time->t_s != SECOND_FULL){                 //Second++.                c_time->t_s++;        }        //Print.        showtime();} /* Define function:     counttime. * Function describe:   count time by one second.*/void counttime(void){        struct sigaction act;        struct itimerval value;         /*1>.Sigal of break time.*/        act.sa_handler  = dealtime;        act.sa_flags    = 0;        sigemptyset(&act.sa_mask);        sigaction(SIGPROF, &act, NULL);         /*2>Time part.*/        value.it_value.tv_sec   = 0;        value.it_value.tv_usec  = 1;        value.it_interval.tv_sec   = 1;        value.it_interval.tv_usec  = 0;        setitimer(ITIMER_PROF, &value, NULL); } /* Define function:     showtime * function describe:   print time on shell interface.*/void showtime(void){        //Then print the time value.        move(SHOW_TIME_COORDINATE_X, SHOW_TIME_COORDINATE_Y);        printw("d:d:d", c_time->t_h, c_time->t_m, c_time->t_s);        refresh();}


Note Over。

原创粉丝点击