社区
C语言
帖子详情
一个程序进程间的切换
sunnyqboy
2009-02-19 11:59:46
最近做一个程序,用curses编写。程序有界面,要求在一个窗体录入的时候,可以切换到另外一个窗体,启动改程序中的查询模块,查询完毕之后又可以切回来,继续做该录入,如何实现?
如果直接用界面保存函数,如何确定回来仍在那个栏位处?
...全文
184
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
打赏
举报
回复
这是窗口焦点切换操作。
切换的时候,保存当前录入的位置即可。
进程
间
的状态
切换
点击此处阅读原文
进程
之
间
的状态
切换
。下文中以单核计算机为例。 在任意时刻下,通常只有
一个
进程
可以被加载到计算机的CPU上运行。 三状态模型 任何
一个
进程
在它的生命周期内都会处于下面三种状态,使用这三种状态可以简单描述运行在计算机上的
进程
之
间
的状态
切换
,
进程
的一生都处在这三种状态
间
相互转换。 运行态(Running):指该
进程
正在被CPU调度运行。 就绪态(Ready):指该
进程
满足被CPU调度...
进程
及
进程
间
的
切换
(操作系统)
进程
1、认识
进程
: 对于操作系统来说,
一个
任务就是
一个
进程
,本质上是正在执行的
一个
程序
。 我们可以通过查看“windows任务管理器”中的列表,我们可以完全认为在内存中的每
一个
exe文件理解为
进程
。 但是并不是
进程
与
程序
是
一个
概念,
进程
是动态的(
进程
是担当分配系统资源(CPU时
间
,内存)的实体,是具有动态特性的),而
程序
是
一个
静态的资源。
进程
:通过
程序
运行,表现在操作系统执行的,被操作...
切换
进程
切换
线程
进程
间
切换
的步骤: 1 ,保存
程序
计数其以及其他寄存器。 2 , 更新当前处于“运行态”的
进程
的
进程
控制块,把
进程
状态改为相应状态, 更新其他相关域 3 , 把被
切换
进程
的
进程
控制块移到相关状态的队列 4 , 选择另外
一个
进程
开始执行,把该
进程
进程
控制块的状态改为“运行态” 5 , 恢复被选择
进程
的处理器在最近一次
操作系统的多
进程
组织、
进程
间
切换
用户使用计算机就是启动了一堆
进程
;用户管理计算机就是管理这一堆
进程
操作系统如何组织多个
进程
即根据PCB、根据状态形成不同的队列放在不同的位置。多个
进程
如何组织呢?用PCB放在不同的队列中(就绪、阻塞),用状态转化来推进多个
进程
的执行操作系统如何完成
进程
的
切换
调度选择下
一个
进程
,得到下
一个
进程
的PCB,把上
一个
进程
的执行现场保存起来,把下
一个
进程
的现场覆盖到CPU对应的寄存器中去。多
进程
如何交替?如...
【操作系统】
进程
切换
到底是怎么个过程?
首先,我们要了解,
进程
切换
是个什么过程?
进程
切换
概念 其实很简单,
进程
切换
就是从正在运行的
进程
中,收回CPU的使用权利,交给下
一个
要运行的
进程
。 实际上,因为被
切换
的
进程
下一次可能还要继续运行,所以这个过程又是被
切换
进程
和将要运行
进程
的上下文
切换
,这个上下文就包括
进程
正在运行时的一些信息。
进程
切换
引起的方法 知道
进程
切换
是个什么概念后,我们需要知道,什么情况下回引起
进程
间
的
切换
呢? 一般来说,
进程
切换
发生在中断/异常/系统调用处理过程中,一般有以下几种情况: 1、阻塞式系统调用、虚拟地址
C语言
70,036
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章