我想做个进程管理程序,就是往共享内存中插入进程记录,查找进程记录,删除进程记录,用map能实现吗
进程结构
进程结构
struct CProcessRecord
{
int m_iProcessId; //进程ID
char m_strName[32]; //进程名称
int m_iType; //进程类型
short m_siHostID; //节点ID
short m_siRunMode; //运行模式
int m_iStartMode; //启动模式(无用)
int m_iPID; //PID
short m_siCurrStatus; //当前状态
//SDateTime m_dtStartTime; //启动时间
//SDateTime m_dtLastUpdateTime; //最近更新时间
short m_siHeartBeatCounter; //计数器
float m_fCPUPercent; //CPU%
float m_fMemUsage; //MEM%
[解决办法]
你的意思是如果是用map来保存上面的结构体信息,并且通过操作这个map对象来添加删除上述信息单元的话,感觉是可以的,而且从可以结构体中取出一个关键字作为一个索引,例如m_iProcessId,这样结构体里也不要这项了!如果用vector的话,就没有索引了!要删除添加比较麻烦
如果你要写入共享内存的话,开辟好共享内存后,先取一个空间记录进程信息个数,然后,就连续的copy一个个结构体就行了。因为你的结构体是定长的,比较简单。至于添加比较简单了,直接往后添加,只要共享内存有空间就好。如果要删除的话,需要实现查找功能(或者还需要移动所有后面的信息保持连续,这就看怎么实现了)。可以做一个实现管理共享内存的类,里面可以有个map,但是map里记录的应该是只是每个进程信息的相对地址了!