greenwillow280
关于curses多线程界面开发问题?
我写了个程序
在main里起了一个子线程作为处理内容的输出线程,里面是个循环。
主线作为输入处理线程,为什么会出现花屏?
下面是我的部分程序
void omsShow( threadData *param)
{
extern WINDOW *gbCurWin;
int iLen;
ssize_t n;
char sBuff[1024+1];
char sTmp[1024+1];
char *pLine;
while((n=read(param->iReadFd,sBuff,1024))>0)//iReadFd是管道
{
waddstr(param->pWinMain,sBuff);
wrefresh(param->pWinMain);
memset(sBuff,0x00,sizeof(sBuff));
wrefresh(gbCurWin);
touchwin(gbCurWin);
usleep(100);
}
}
main()
{
.......
param.iReadFd=iReadFd;
param.pWinMain=pWinMain;
pthread_create(&tid,NULL,omsShow,(void *)¶m);
........
while((iCmdStr=ShTextBox(&cmdBox))=='/r'||iCmdStr==PAD_F(0)||iCmdStr==PAD_F(1)||iCmdStr==PAD_F(5))
{
write(iWriteFd, "file",4);//iWriteFd是管道
write(iWriteFd,sCmdStr,strlen(sCmdStr));
通过管道发数据到另一个进程处理,通过管道在上面的omsShow接收数据然后显示出来.
}
}
ShTextBox是我自己写的一个文本框,用来输入命令
[[i] 本帖最后由 greenwillow280 于 2008-6-19 21:40 编辑 [/i]]