【发布时间】:2015-09-29 04:34:43
【问题描述】:
我正在尝试使用 pthread 简单地运行两个 ncurse 窗口。我写的代码如下:
#include<stdio.h>
#include<pthread.h>
#include<ncurses.h>
#include<sys/ioctl.h>
#include<string.h>
#include<unistd.h>
struct winsize w;
WINDOW *win1,*win2;
void createWin1(void){
while(1){
char buffer[1024];
win1=newwin(0,0,40,50);
box(win1,0,0);
wrefresh(win1);
sleep(1);
}
}
void createWin2(void){
while(1){
win2=newwin(40,50,40,60);
box(win2,0,0);
wrefresh(win2);
sleep(1);
}
}
void main()
{ initscr();
noecho();
cbreak();
start_color();
use_default_colors();
init_pair(1,COLOR_WHITE, -1);
pthread_t p1,p2;
pthread_create(&p1,NULL,(void *)createWin1,NULL);
pthread_create(&p2,NULL,(void *)createWin2,NULL);
pthread_join(p1,NULL);
pthread_join(p2,NULL);
}
现在的问题是我不能同时运行两个窗口。这将显示意外的输出。谁能帮我找出我的代码中的问题。
【问题讨论】:
-
欢迎堆栈溢出。
-
是 c 还是 c++ 还是两者兼有?
-
ncurses 多线程并不容易。基本文档有一些基本支持;如果您安装了 ncurses 手册页,请尝试
man curs_threads或man threads或在线阅读 here