[c]代码库
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <math.h>
#include <curses.h>
WINDOW *w;
int num;
int isstop=0;
void handle(int s)
{
if(s==SIGUSR1)
{
if(isstop==1)
isstop=0;
else
isstop=1;
}
}
main()
{
initscr();
curs_set(0);//隐藏光标
noecho();//禁止输入回显
//创建子窗体
w=derwin(stdscr,3,11,(LINES-3)/2,(COLS-11)/2);
box(w,0,0);//给子窗体加边框
refresh();
wrefresh(w);
if(fork())
{
//显示7位数的随机数
signal(SIGUSR1,handle);
while(1){
if(isstop==1)
{
pause();//pause会被信号中断停止
}
num=rand()%10000000;//产生7位随机数
mvwprintw(w,1,2,"%07d",num);//显示随机数
refresh();//刷新屏幕。
wrefresh(w);
usleep(10000);//暂停10毫秒
}
}
else
{
//处理按键
while(1)
{
getch();
kill(getppid(),SIGUSR1);
}
}
endwin();
}
[代码运行效果截图]