Symbian操作系统结构之五:进程
2009-07-14 11:08
239 查看
*进程
- 一个Symbian操作系统进程就是一个拥有数据区域,栈和堆的可执行程序
- 一个进程默认拥有8KB的栈空间和1MB的堆空间
- 在Symbian操作系统中,可以同时激活多个进程
- 进程具有私有的地址空间,用户侧的进程无法直接访问其它用户侧进程的内存
- 默认情况下,一个进程包含一个主线程,同时可以创建附加线程
- 线程间切换比进程间切换需要的开销要小的很多
*在Symbian操作系统中,使用RProcess来操作进程
*进程示例
#include<e32base.h>
TInt E32Main() //E32Main()主函数是进程的起点
{
LIT(KMsgTxt,"Process");
for (TInt i=0; i<100; i++)
{
User::InfoPrint(KMsgTxt);
User::After(2000000);
}
return(0);
}
*运行进程
TInt RProcess::Create(const TDesC& aExceutableFile, const TDesC& aCommand, TOwnerType aType=EOwnerProcess)
EOwnerProcess默认的是所有的进程都可以调用这个进程,如果aType=EOwnerThread则表明只能被当前进程调用
void LaunchProcessL()
{
_LIT(KMyExeFile,"c://system//programs//MyProc.exe");
RProcess proc;
User::LeaveIfError(proc.Create(KmyExeFile,KNullDesC));
proc.Resume();//运行进程
……
proc.Close();
}
*设置和获取进程参数
- 通过在Create()中设置第二个参数,可以传递命令行参数
void LaunchProcessWithArgL()
{
_LIT(KMyExeFile,"c://system//programs//MyProc.exe");
_LIT(KMyExeFileCmd,"-x 20 -y 30");
RProcess proc;
User::LeaveIfError(proc.Create(KMyExeFile,KMyExeFileCmd));
proc.Resume();//运行该进程
}
- 通过CommandLine()可以获得命令行参数
TBuf<200> cmdLine;
RProcess me;
me.CommandLine(cmdLine);//把参数返回到cmdLine中
*进程间通信
- 可以通过Open()函数打开其它进程
- Open()需要的参数为进程的ID或名字
RProcess myProcess;
myProcess.Open(Aprocld);
if (rc != KErrNone)
{
处理错误
}
……
myProcess.Close();//完成之后关闭句柄
*进程的名字
- 每个进程都有一个相关联的ASCII名字
- 默认的进程名是包含该进程的exe文件名(不包括后缀名)
- 进程名可以通过Rename()函数进行修改
- 通过名字开启进程的更好的方法是使用Open(TFindProcess& aFind)重载
RProcess proc;
_LIT(KMatchName,"MyProc*");
TFindProcess procName(KMatchName);
TInt rc = proc.Open(procName);//打开的是第一个相匹配的进程
if (rc != KErrNone)
{
处理错误
}
*进程的优先级
- 内核根据进程优先级来判断当多个进程需要同时执行时应该首先执行哪个进程
- 使用SetPriority()可以设置进程的优先级 //也可以在mmp文件中设置
- 进程的优先级主要有
·EPriorityLow(150)
·EPriorityBackground(250)
·EPriorityForeground(350)
·EPriorityHigh(450)
*终止进程
- 通常情况下,进程运行完成之后(既E32Main()函数运行结束)会自动终止
- 也可以强制终止进程
·Kill(TInt aReason)
- aReason说明进程终止的原因
- 进程可以终止自己,或者终止其它进程
·Panic(const TDesC& aCategory, TInt aReason)
- 表示检测到一些不可恢复的错误
- aCategory是指示错误类型的字符串
- aReason给出更加具体的错误号
- 一个Symbian操作系统进程就是一个拥有数据区域,栈和堆的可执行程序
- 一个进程默认拥有8KB的栈空间和1MB的堆空间
- 在Symbian操作系统中,可以同时激活多个进程
- 进程具有私有的地址空间,用户侧的进程无法直接访问其它用户侧进程的内存
- 默认情况下,一个进程包含一个主线程,同时可以创建附加线程
- 线程间切换比进程间切换需要的开销要小的很多
*在Symbian操作系统中,使用RProcess来操作进程
*进程示例
#include<e32base.h>
TInt E32Main() //E32Main()主函数是进程的起点
{
LIT(KMsgTxt,"Process");
for (TInt i=0; i<100; i++)
{
User::InfoPrint(KMsgTxt);
User::After(2000000);
}
return(0);
}
*运行进程
TInt RProcess::Create(const TDesC& aExceutableFile, const TDesC& aCommand, TOwnerType aType=EOwnerProcess)
EOwnerProcess默认的是所有的进程都可以调用这个进程,如果aType=EOwnerThread则表明只能被当前进程调用
void LaunchProcessL()
{
_LIT(KMyExeFile,"c://system//programs//MyProc.exe");
RProcess proc;
User::LeaveIfError(proc.Create(KmyExeFile,KNullDesC));
proc.Resume();//运行进程
……
proc.Close();
}
*设置和获取进程参数
- 通过在Create()中设置第二个参数,可以传递命令行参数
void LaunchProcessWithArgL()
{
_LIT(KMyExeFile,"c://system//programs//MyProc.exe");
_LIT(KMyExeFileCmd,"-x 20 -y 30");
RProcess proc;
User::LeaveIfError(proc.Create(KMyExeFile,KMyExeFileCmd));
proc.Resume();//运行该进程
}
- 通过CommandLine()可以获得命令行参数
TBuf<200> cmdLine;
RProcess me;
me.CommandLine(cmdLine);//把参数返回到cmdLine中
*进程间通信
- 可以通过Open()函数打开其它进程
- Open()需要的参数为进程的ID或名字
RProcess myProcess;
myProcess.Open(Aprocld);
if (rc != KErrNone)
{
处理错误
}
……
myProcess.Close();//完成之后关闭句柄
*进程的名字
- 每个进程都有一个相关联的ASCII名字
- 默认的进程名是包含该进程的exe文件名(不包括后缀名)
- 进程名可以通过Rename()函数进行修改
- 通过名字开启进程的更好的方法是使用Open(TFindProcess& aFind)重载
RProcess proc;
_LIT(KMatchName,"MyProc*");
TFindProcess procName(KMatchName);
TInt rc = proc.Open(procName);//打开的是第一个相匹配的进程
if (rc != KErrNone)
{
处理错误
}
*进程的优先级
- 内核根据进程优先级来判断当多个进程需要同时执行时应该首先执行哪个进程
- 使用SetPriority()可以设置进程的优先级 //也可以在mmp文件中设置
- 进程的优先级主要有
·EPriorityLow(150)
·EPriorityBackground(250)
·EPriorityForeground(350)
·EPriorityHigh(450)
*终止进程
- 通常情况下,进程运行完成之后(既E32Main()函数运行结束)会自动终止
- 也可以强制终止进程
·Kill(TInt aReason)
- aReason说明进程终止的原因
- 进程可以终止自己,或者终止其它进程
·Panic(const TDesC& aCategory, TInt aReason)
- 表示检测到一些不可恢复的错误
- aCategory是指示错误类型的字符串
- aReason给出更加具体的错误号
相关文章推荐
- 操作系统笔记-操作系统结构-进程管理2015-6-5
- Symbian操作系统结构之三:ROM和RAM中的可执行文件
- Symbian操作系统结构之一:DLL
- Symbian操作系统结构之四:线程
- 第二十一篇:Linux 操作系统中的进程结构
- 操作系统 - Linux进程实现的内部结构
- 操作系统 - Linux进程实现的内部结构
- Symbian操作系统结构之二:可写静态数据
- Symbian--操作系统中的线程和进程
- Linux 操作系统中的进程结构
- Symbian操作系统结构之一:DLL
- 操作系统中的作业、进程、线程、管程各自的定义
- 操作系统结构(二)
- 现代操作系统:进程与线程
- 操作系统中进程和线程的一些概念
- 操作系统中进程概念的理解
- oracle整体结构-内存结构、物理结构、逻辑结构、进程
- 学习笔记——操作系统_Linux的进程通信
- 操作系统进程描述
- Linux程序存储结构与进程结构