⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawfork.c

📁 .添加系统调用.采用编译内核的方法
💻 C
字号:
#include <unistd.h>
#include <stdlib.h>
#include <curses.h>
#include <sys/types.h>
#include <time.h>

#define HEIGHT ((LINES)/4)
#define LOOP 10

/* 创建窗口函数 */
WINDOW *cre_win(int num){
    WINDOW *window_ptr = newwin(HEIGHT,COLS,num*HEIGHT,0);      /* 创建一个新窗口,返回调用指针给window_ptr */
    box(window_ptr,'|','-');                            /* 给窗口加上边框 */
    switch(num) {                           /* 根据不同创建参数显示不同信息 */
        case 0 : mvwprintw(window_ptr,0,1,"First Window!"); break;
        case 1 : mvwprintw(window_ptr,0,1,"Second Window!"); break;
        case 2 : mvwprintw(window_ptr,0,1,"Third Window!"); break;
	case 3 : mvwprintw(window_ptr,0,1,"created by:");break;
    }
    touchwin(window_ptr);                  /* 选定要操作的窗口 */
    wrefresh(window_ptr);                 /* 对窗口进行刷新 */
    refresh();                      /* 对整个屏幕进行刷新 */
    mvwprintw(window_ptr,1,1,"");        /* 光标移动到window_ptr指定的窗口的左上角打印.... */
    return window_ptr;
}
 
/* 在窗口中打印模拟进程的符号 */   
void draw(WINDOW *win, int delayTime){
    int i;
    long j = 0;
    for (i = 0;i < LOOP;++i){
        sleep(delayTime);               /* 延迟时间 */
        wprintw(win,"@");            /* 在win指定的窗口中打印@ */
        touchwin(win); 
        wrefresh(win);
        refresh();
    }
    wprintw(win, " finished!");
    wrefresh(win);
    refresh();
    sleep(2);
}

int main(){    
    pid_t pid;
    int i;
    WINDOW *win0,*win1,*win2,*win3;
    initscr();
    win0 = cre_win(0);               /* 调用cre_win()创建三个窗口 */
    win1 = cre_win(1);
    win2 = cre_win(2);
    win3 = cre_win(3);
    mvwprintw(win3,2,COLS/3,"zhengzhangxiao : 012002013324");
    wrefresh(win3);
    refresh();
    if ((pid = fork()) != 0){           /* 创建一个新的原进程的子进程 */
        waitpid(pid,NULL,0);             /* 等待创建的子进程结束 */
        clear();                     /* 清屏 */
        endwin();                  /* 关闭对窗口的初始化 */
    }
    else if ((pid = fork()) != 0){              
        draw(win2, 3);
        waitpid(pid,NULL,0);
    }
    else if ((pid = fork()) != 0){
        draw(win1, 2);
        wprintw(win1, " finished!");          /* 显示进程结束信息 */
        waitpid(pid,NULL,0);
    }
    else {
        draw(win0, 1);
        wprintw(win2, " finished!");
    }
exit(EXIT_SUCCESS);
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -