#include <curses.h>
#include <time.h>
#include <stdlib.h>
#include <sys/mman.h>
int main(){
int d;
int *p = NULL;
int ch;
initscr();// 制作标准窗口
keypad(stdscr,true);
curs_set(0);//设置光标透明度为100
WINDOW* w = derwin(stdscr,3,9,LINES/2-1,COLS/2-4);//定义窗口
p = (int*)mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,0,0);
*p = 0;
box(w,0,0);//画窗口
srand(time(0));
if(fork()){
while(1){
while(*p);//如果*p==1,阻塞
d = rand()%10000000;
mvwprintw(w,1,1,"%07d",d);
usleep(10000);
wrefresh(w);
}
}else{
while(1){
ch = getch();
if(ch == '\n')
if(*p == 1)
*p = 0;
else
*p = 1;
}
}
refresh();//刷新标准窗口
getch();//从窗口上获取一个字符
endwin();//销毁窗口
return 0;
}linux多进程通讯
最新推荐文章于 2024-04-24 12:43:08 发布
本示例演示了如何使用Curses库创建一个简单的实时交互界面。程序通过子窗口显示随机数字,并允许用户通过回车键切换显示状态。涉及的技术包括C语言、curses.h库、内存映射和进程间通信。
3155

被折叠的 条评论
为什么被折叠?



