#include <stdio.h>
void main()
{
//显示所有的进程
system("tasklist")
system("pause")
}
显示正在运行的进程
#include <conio.h>#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
struct PCB_type
{ char pid[100] //进程名输入用字符串健壮性比较好
int priority
int cputime
int state
} //缺少“}”
int shumu=0,pid_l
struct PCB_type neicun[20]
struct PCB_type hc[10]
int max=0
int number=0
void create()
void run()
void huanchu()
void kill()
int main()
{
int n,a
n=1
system("color 1d")
while(n==1)
{
system("cls")
printf("\n**********************************************")
printf("\n* 进程演示系统 *")
printf("\n**********************************************")
printf("\n 1.创建新的进程 2.查看运行进程")
printf("\n 3.换出某个进程 4.杀死运行进程") //新增了一个唤醒功能
printf("\n 5.退出系统 ")
printf("\n**********************************************")
printf("\n请选择(1~5):")
scanf("%d",&a)
switch(a)
{ case 1:
create( )
printf("\npress any key to go on~")
getch()
break
case 2 :
run()
printf("\npress any key to go on~")
getch()
break
case 3 :
huanchu()
printf("\npress any key to go on~")
getch()
break
case 4 :
kill()
printf("\npress any key to go on~")
getch()
break
case 5 :
exit(0)
default:
n=1
break
}
}
}
void create()
{
if(shumu>=20)
{
printf("\n内存已满,请先结束或换出进程\n")
}
else
{
shumu++
printf("\n请输入新进程的程序名\n")
scanf("%s",neicun[shumu-1].pid)
printf("\n请输入新进程的优先级(数字)\n")//
scanf("%d",&neicun[shumu-1].priority)
printf("\n请输入新进程的需要的运行时间\n")//
scanf("%d",&neicun[shumu-1].cputime)
printf("\n创建进程时令其状态为就绪\n")
neicun[shumu-1].state=2 //1为等待,2就绪,3为运行
}
printf("\n创建进程成功!\n")
}
void run()
{
if(shumu<=0)//查看//判断是否存在进程
{
printf("当前状态无进程,按任意键继续创建进程\n")
return
}
int max=0
for(int i=0i<shumui++)//
if((neicun[i].state==2&&neicun[i].priority>=neicun[max].priority))
{
max=i //这里判断优先级,优先级高的进程优先执行。
}
if(neicun[max].state==2)
{
neicun[max].state=3 //进程运行,状态为3
system("color 5F")
printf("/*********************当前已有进程%d个*************************/:\n",shumu)
for(int i=0i<shumui++){
printf("进程编号:%d",i+1)
printf("\n/***********正在运行进程程序名:%s*************************/\n",neicun[i].pid)
printf("\n/***********该进程的优先级:%d*****************************/\n",neicun[i].priority)
printf("\n/***********该进程的需要运行时间:%d***********************/\n",neicun[i].cputime)
printf("\n/***********该进程的状态:%d(1为等待,2就绪,3为运行)******/\n\n\n",neicun[i].state) } //这里增加显示当前运行的进程
}
}
/* 换出 */
void huanchu()
{
int k
if(shumu<=0)//判断是否存在进程
{
printf("当前进程数目为0,不能执行该 *** 作\n")
return
}
printf("当前已有进程%d个:\n",shumu)
for(int h=0h<shumuh++)//当前所有的进程
printf("序号:%d\t程序名:%s\t优先级:%d\t运行时间:%d\t状态:%d\t\n"
,h,neicun[h].pid,neicun[h].priority,neicun[h].cputime,neicun[h].state)
printf("请输入要换出程序的序号:")
scanf("%d",&k)
if(neicun[k].state==3)
{
neicun[k].state=1
printf("已被换出,进程名为:%s、状态为:[%d]",neicun[k].pid,neicun[k].state)
}
else
printf("无法换出,进程名为:%s的进程",neicun[k].pid) //换出结果提示
}
void kill()
{
if(shumu<=0)//对存在的进程进行判断
{
printf("当前进程数目为0,不能执行该 *** 作\n")
return
}
int k=0
printf("/******************当前已有进程%d个******************/:\n",shumu)
for(int h=0h<shumuh++)//当前所有的进程
printf("序号:%d\t程序名:%s\t优先级:%d\t运行时间:%d\t状态:%d\t\n"
,h,neicun[h].pid,neicun[h].priority,neicun[h].cputime,neicun[h].state)
printf("请输入要杀死程序的序号:")
scanf("%d",&k)
neicun[k].cputime=0
neicun[k].priority=0
neicun[k].state=0
if(k==(shumu-1))
shumu--
else{
for(int j=k+1j<shumuj++)
{
strcmp(neicun[j-1].pid,neicun[j].pid)
neicun[j-1].priority=neicun[j].priority
neicun[j-1].cputime=neicun[j].cputime
neicun[j-1].state=neicun[j].state
}
shumu--
}
printf("进程名为:%s已被杀死!\n",neicun[k].pid) //显示进程已被杀死
}
windows每个进程都有自己的地址空间。openprocess打开进程,readprocessmemory读进程数据,writeprocessmemory写进程数据。难点在于找到你想读的数据在进程地址空间中的偏移即相对地址欢迎分享,转载请注明来源:内存溢出
评论列表(0条)