processmanager.cc
来自「linux的例子,就是下载后到自己的机子上去运行」· CC 代码 · 共 61 行
CC
61 行
#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 + =
减小字号Ctrl + -
显示快捷键?