用c语言编写的进程管理程序?
答案:2 悬赏:0 手机版
解决时间 2021-01-19 17:54
- 提问者网友:那叫心脏的地方装的都是你
- 2021-01-19 04:32
用c语言编写的进程管理程序?
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-01-19 05:41
#include
#include
#include
#include
#include
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("
**********************************************");
printf("
* 进程演示系统 *");
printf("
**********************************************");
printf("
1.创建新的进程 2.查看运行进程");
printf("
3.换出某个进程 4.杀死运行进程"); //新增了一个唤醒功能
printf("
5.退出系统 ");
printf("
**********************************************");
printf("
请选择(1~5):");
scanf("%d",&a);
switch(a)
{ case 1:
create( );
printf("
press any key to go on~");
getch();
break;
case 2 :
run();
printf("
press any key to go on~");
getch();
break;
case 3 :
huanchu();
printf("
press any key to go on~");
getch();
break;
case 4 :
kill();
printf("
press any key to go on~");
getch();
break;
case 5 :
exit(0);
default:
n=1;
break;
}
}
}
void create()
{
if(shumu>=20)
{
printf("
内存已满,请先结束或换出进程
");
}
else
{
shumu++;
printf("
请输入新进程的程序名
");
scanf("%s",neicun[shumu-1].pid);
printf("
请输入新进程的优先级(数字)
");//
scanf("%d",&neicun[shumu-1].priority);
printf("
请输入新进程的需要的运行时间
");//
scanf("%d",&neicun[shumu-1].cputime);
printf("
创建进程时令其状态为就绪
");
neicun[shumu-1].state=2; //1为等待,2就绪,3为运行
}
printf("
创建进程成功!
");
}
void run()
{
if(shumu<=0)//查看//判断是否存在进程
{
printf("当前状态无进程,按任意键继续创建进程
");
return;
}
int max=0;
for(int i=0;i 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(":
",shumu);
for(int i=0;i printf("进程编号:%d",i+1);
printf("
",neicun[i].pid);
printf("
",neicun[i].priority);
printf("
",neicun[i].cputime);
printf("
",neicun[i].state); } //这里增加显示当前运行的进程
}
}
void huanchu()
{
int k;
if(shumu<=0)//判断是否存在进程
{
printf("当前进程数目为0,不能执行该操作
");
return;
}
printf("当前已有进程%d个:
",shumu);
for(int h=0;h printf("序号:%d 程序名:%s 优先级:%d 运行时间:%d 状态:%d
"
,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,不能执行该操作
");
return;
}
int k=0;
printf(":
",shumu);
for(int h=0;h printf("序号:%d 程序名:%s 优先级:%d 运行时间:%d 状态:%d
"
,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+1;j {
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已被杀死!
",neicun[k].pid); //显示进程已被杀死
}
#include
#include
#include
#include
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("
**********************************************");
printf("
* 进程演示系统 *");
printf("
**********************************************");
printf("
1.创建新的进程 2.查看运行进程");
printf("
3.换出某个进程 4.杀死运行进程"); //新增了一个唤醒功能
printf("
5.退出系统 ");
printf("
**********************************************");
printf("
请选择(1~5):");
scanf("%d",&a);
switch(a)
{ case 1:
create( );
printf("
press any key to go on~");
getch();
break;
case 2 :
run();
printf("
press any key to go on~");
getch();
break;
case 3 :
huanchu();
printf("
press any key to go on~");
getch();
break;
case 4 :
kill();
printf("
press any key to go on~");
getch();
break;
case 5 :
exit(0);
default:
n=1;
break;
}
}
}
void create()
{
if(shumu>=20)
{
printf("
内存已满,请先结束或换出进程
");
}
else
{
shumu++;
printf("
请输入新进程的程序名
");
scanf("%s",neicun[shumu-1].pid);
printf("
请输入新进程的优先级(数字)
");//
scanf("%d",&neicun[shumu-1].priority);
printf("
请输入新进程的需要的运行时间
");//
scanf("%d",&neicun[shumu-1].cputime);
printf("
创建进程时令其状态为就绪
");
neicun[shumu-1].state=2; //1为等待,2就绪,3为运行
}
printf("
创建进程成功!
");
}
void run()
{
if(shumu<=0)//查看//判断是否存在进程
{
printf("当前状态无进程,按任意键继续创建进程
");
return;
}
int max=0;
for(int i=0;i
{
max=i; //这里判断优先级,优先级高的进程优先执行。
}
if(neicun[max].state==2)
{
neicun[max].state=3; //进程运行,状态为3
system("color 5F");
printf(":
",shumu);
for(int i=0;i
printf("
",neicun[i].pid);
printf("
",neicun[i].priority);
printf("
",neicun[i].cputime);
printf("
",neicun[i].state); } //这里增加显示当前运行的进程
}
}
void huanchu()
{
int k;
if(shumu<=0)//判断是否存在进程
{
printf("当前进程数目为0,不能执行该操作
");
return;
}
printf("当前已有进程%d个:
",shumu);
for(int h=0;h
"
,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,不能执行该操作
");
return;
}
int k=0;
printf(":
",shumu);
for(int h=0;h
"
,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+1;j
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已被杀死!
",neicun[k].pid); //显示进程已被杀死
}
全部回答
- 1楼网友:轮獄道
- 2021-01-19 06:05
不会
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯