|
#include <unistd.h>
#include <curses.h>
#include <sys/types.h>
int main(void)
{
pid_t sub_pid1,sub_pid2;
int i,j,k,per_sub_1,per_sub_2,per_father;
per_sub_1=per_sub_2=per_father=0; /*进程运行百分比初始化为0*/
WINDOW *w1,*w2,*w3;
initscr(); /*初始化屏幕*/
w1=newwin(5,70,3,5); /*父进程显示窗口*/
box(w1,ACS_VLINE,ACS_HLINE);
init_pair(100,COLOR_RED,COLOR_BLACK);
wattrset(w1,100);
for(i=0;i<50;i++)
{
mvwprintw(w1,2,(i+7),"%s","$");
}
touchwin(w1);
wrefresh(w1);
w2=newwin(5,70,10,5); /*子进程1显示窗口*/
box(w2,ACS_VLINE,ACS_HLINE);
init_pair(200,COLOR_GREEN,COLOR_BLACK);
wattrset(w2,200);
for(i=0;i<50;i++)
{
mvwprintw(w2,2,(i+7),"%s","$");
}
touchwin(w2);
wrefresh(w2);
w3=newwin(5,70,17,5); /*子进程2显示窗口*/
box(w3,ACS_VLINE,ACS_HLINE);
init_pair(300,COLOR_BLUE,BLACK);
wattrset(w3,300);
for(i=0;i<50;i++)
{
mvwprintw(w3,2,(i+7),"%s","$");
}
touchwin(w3);
wrefresh(w3);
sub_pid1=fork();/*创建子进程1*/
if(sub_pid1==0)
{
for(i=0;i<50;i++)
{
per_sub_1+=2; /*子进程1显示窗口的处理*/
mvwprintw(w2,1,25,"%s","child 1 is running");
mvwprintw(w2,2,(7+i),"%s","&");
mvwprintw(w2,2,64,"%d",per_sub_1);
mvwprintw(w2,2,67,"%s","%");
touchwin(w2);
wrefresh(w2);
refresh();
sleep(1);
}
mvwprintw(w2,3,25,"%s","proccess ended");
touchwin(w2);
wrefresh(w2);
refresh();
}
else
{
sub_pid2=fork(); /*创建子进程2*/
if(sub_pid2==0)
{
for(j=0;j<50;j++)
{ /*子进程2显示窗口的处理*/
per_sub_2+=2;
mvwprintw(w3,1,25,"%s","child 2 is running");
mvwprintw(w3,2,(7+j),"%s","&");
mvwprintw(w3,2,64,"%d",per_sub_2);
mvwprintw(w3,2,67,"%s","%");
touchwin(w3);
wrefresh(w3);
refresh();
sleep(1);
}
mvwprintw(w3,3,25,"%s","proccess ended");
touchwin(w3);
wrefresh(w3);
refresh();
}
else
{
for(k=0;k<50;k++)
{ /*父进程即当前正在运行程序的进程*/
per_father+=2;
mvwprintw(w1,1,25,"%s","parent is running");
mvwprintw(w1,2,(7+k),"%s","&");
mvwprintw(w1,2,64,"%d",per_father)
mvwprintw(w1,2,67,"%s","%");
touchwin(w1);
wrefresh(w1);
refresh();
sleep(1);
}
mvwprintw(w1,3,25,"%s","proccess ended");
touchwin(w1);
wrefresh(w1);
refresh();
sleep(5);
endwin();
exit(0);
}
}
}
上面是源程序,是用来显示三个进程的,单要用curses.h,但显示窗口颜色与文字有问题,是否未初始化,如果要初始化,如何初始化,请高手指点,小弟在此谢过!!!! |
|