📄 drawfork.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 + -