📄 processmanager.cc
字号:
#include "processmanager.h"ProcessManager::ProcessManager(){ t=new Table(16); }ProcessManager::~ProcessManager(){ if(t!=NULL) delete t;}intProcessManager::Getpid(int ppid){ process=new Process(); process->ppid=ppid; process->status=0; process->active=1; process->joined=1; process->joinsem=new Semaphore("process",0); process->pid=t->Alloc(process)+1; return process->pid;}voidProcessManager::Release(int pid,int status){ Process *proc; if(pid==0) return; proc=(Process*)(t->Get(pid-1)); proc->active=0; proc->status=status; if(proc->joinsem!=NULL) proc->joinsem->V(); if(proc->ppid==0) PListController(proc->pid,proc->ppid); t->Release(pid-1);}boolProcessManager::getStatus(int pid,int ppid,int *status){ return true;} voidProcessManager::PListController(int pid,int ppid){ int i; Process *proc; for(i=0;i<1024;i++){ proc=(Process*)(t->Get(i)); if(proc==NULL) continue; if(proc->pid==pid&&proc->ppid==0) t->Release(i); else if(proc->ppid==pid){ if(proc->active==1) proc->ppid=0; else t->Release(i); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -