社区
C语言
帖子详情
一个程序进程间的切换
sunnyqboy
2009-02-19 11:59:46
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现?
如果直接用界面保存函数,如何确定回来仍在那个栏位处?
...全文
205
6
打赏
收藏
一个程序进程间的切换
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现? 如果直接用界面保存函数,如何确定回来仍在那个栏位处?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunnyqboy
2009-02-26
打赏
举报
回复
用了panel,出现了一个比较蹊跷的问题:如下
#include <curses.h>
#include <panel.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void initcurses();
void initwin(WINDOW **wins,int k);
void initpanel(PANEL **panels,WINDOW **wins,int k);
void set_user_ptrs(PANEL **panels,PANEL **ptrs,int n);
main()
{
int ch,i=1,j =0 ,k=2;
int start=0;
int exits=0;
int m =0;
WINDOW *wins[2];
PANEL *panels[2];
PANEL *top;
PANEL *ptrs[2];
pid_t pid;
initcurses();
initwin(wins,k);
initpanel(panels,wins,k);
set_user_ptrs(panels,ptrs,2);
box(wins[0],'.',',');
box(wins[1],'!','#');
top = panels[0];
top_panel(top);
update_panels();
doupdate();
while (ch = getch())
{
if(m < 0) m = m + 2;
m = m%2;
switch(ch)
{
case KEY_LEFT:
//top = ptrs[m];
top = panels[m];
top_panel(top);
m--;
break;
case KEY_RIGHT:
//top = ptrs[m];
//把代码换成注释部分再按左右键就不能正常切换了,为什么?
top = panels[m];
top_panel(top);
m++;
break;
case 27:
endwin();
exit(1);
}
update_panels();
doupdate();
}
endwin();
}
void initcurses()
{
initscr();
noecho();
keypad(stdscr,TRUE);
box(stdscr,'┃','━');
refresh();
}
void initwin(WINDOW **wins,int k)
{
int i;
for(i = 0;i < k;i++)
{
wins[i] = newwin(5,20,4,10);
}
}
void initpanel(PANEL **panels,WINDOW **wins,int k)
{
int i;
//for(i = (k-1);i >= 0;i--)
for(i = 0;i < k;i++)
{
panels[i] = new_panel(wins[i]);
}
}
void set_user_ptrs(PANEL **panels,PANEL **ptrs,int n)
{
int i = 0;
if((i + 1) == n)
ptrs[i] = panels[0];
else
ptrs[i] = panels[i+1];
}
waizqfor
2009-02-25
打赏
举报
回复
[Quote=引用楼主 sunnyqboy 的帖子:]
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现?
如果直接用界面保存函数,如何确定回来仍在那个栏位处?
[/Quote]
设置焦点函数 然后保存的时候记录当前位置
Dinelgua
2009-02-25
打赏
举报
回复
切之前 记录到文件中
沙漠里的海豚
2009-02-25
打赏
举报
回复
不懂了呵呵,up一下
Leejun527
2009-02-25
打赏
举报
回复
ncurse库里面有设置焦点的函数。具体忘了。
最好用多个面板panel来切换,这样避免界面显示混乱。
dongpy
2009-02-25
打赏
举报
回复
这是窗口焦点切换操作。
切换的时候,保存当前录入的位置即可。
基于mykernel的
一个
简单的时
间
片轮转多道
程序
内核代码分析
学号320原创作品,转载请注明出处。 本实验资源来源: https://github.com/mengning/linuxkernel/ 实验要求 实验要求: 完成
一个
简单的时
间
片轮转多道
程序
内核代码,参考代码见mykernel版本库。 详细分析该精简内核的源代码并给出实验截图,撰写一篇博客(署真实姓名或学号最后3位编号),并在博客文章中注明“原创作品转载请注明出处 + https://g...
linux内核分析:
进程
切换
机制
“陈涛 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”这次作业主要运行
一个
小
程序
来演示linux内核对于
进程
切换
的机制。这个小
程序
采用是时
间
轮转来
切换
不同
进程
(包括保存上下文和加载
进程
)一、mypcb.h—->关于
进程
控制块PCB的数据结构#define MAX_TASK_NUM
Linux深入理解
进程
切换
从现在起,内核在新
进程
的内核态栈上操作,所以,这条指令才是执行旧
进程
切换
到新
进程
的开始。其中,content_switch 函数有三个参数:rq、prev、next,rq即使上面我们说的running queue(就绪队列),prev 指向
切换
前
进程
的
进程
描述符,next 指向
切换
后
进程
的
进程
描述符。switch_to 调用3个参数,prev、next和last,prev和next分别指向新旧
进程
的描述符地址,last,是
一个
输出参数,用来记录是从哪个
进程
切换
来的。将新
进程
的栈指针加载到esp寄存器中。
完成
一个
简单的时
间
片轮转多道
程序
内核代码
章强 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
完毕
一个
简单的时
间
片轮转多道
程序
内核代码(二)
完毕
一个
简单的时
间
片轮转多道
程序
内核代码 重要汇编代码分析 asm volatile( "movl %1,%%esp\n\t" "pushl %1\n\t" "pushl %0\n\t" "ret\n\t" "popl %%ebp\n\t" : :...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章