#include <unistd.h> #include <time.h> #include <string.h> #include <math.h> #include <stdio.h> #include <curses.h> #include <signal.h> #include <sys/time.h> #include <sys/wait.h> WINDOW *wtime,*wnumb; void showtime(int s){ time_t tt; struct tm *t; if(s == SIGALRM){ tt = time(0); t = localtime(&tt); mvwprintw(wtime,1,1,"%02d:%02d:%02d",t->tm_hour,t->tm_min,t->tm_sec); refresh(); wrefresh(wnumb); wrefresh(wtime); } } int main(){ struct itimerval val; initscr(); curs_set(0); //close cursor signal(SIGALRM,showtime); bzero(&val,sizeof(struct itimerval)); val.it_value.tv_sec = 0; val.it_value.tv_usec = 1; val.it_interval.tv_sec = 1; wnumb=derwin(stdscr,3,11,(LINES-3)/2,(COLS-11)/2); wtime=derwin(stdscr,3,10,0,COLS-10); box(wnumb,0,0); box(wtime,0,0); setitimer(ITIMER_REAL,&val,0); refresh(); wrefresh(wnumb); wrefresh(wtime); while(1){ int sum = 0,i; for(i = 0;i < 7;i++) sum = sum*10 + random()%10; mvwprintw(wnumb,1,2,"%07d",sum); refresh(); wrefresh(wnumb); wrefresh(wtime); usleep(1000000); } endwin(); return 1; }
#include <unistd.h> #include <time.h> #include <string.h> #include <math.h> #include <stdio.h> #include <curses.h> #include <signal.h> #include <sys/time.h> #include <sys/wait.h> WINDOW *wnumb; int isstop = 0; void handle(int s){ if(s == SIGUSR1){ if(isstop==0) isstop = 1; else isstop = 0; } } int main(){ initscr(); curs_set(0); //close cursor wnumb=derwin(stdscr,3,11,(LINES-3)/2,(COLS-11)/2); keypad(wnumb,TRUE); keypad(stdscr,TRUE); noecho(); box(wnumb,0,0); refresh(); wrefresh(wnumb); if(fork()){ signal(SIGUSR1,handle); while(1){ if(isstop==1) pause(); int sum = 0,i; for(i = 0;i < 7;i++) sum = sum*10 + random()%10; mvwprintw(wnumb,1,2,"%07d",sum); refresh(); wrefresh(wnumb); usleep(1000); } }else{ while(1){ int ch = getch(); kill(getppid(),SIGUSR1); } } endwin(); return 1; }