用c语言编写的进程管理程序?

实现①创建新的进程②查看运行进程③换出某个进程④杀死运行进程;⑤进程之间通信。的功能... 实现① 创建新的进程 ② 查看运行进程 ③ 换出某个进程 ④ 杀死运行进程;⑤ 进程之间通信。的功能 展开
 我来答
RERIC360
2015-10-21
知道答主
回答量:1
采纳率:100%
帮助的人:1191
展开全部
#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=0;i<shumu;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("/*********************当前已有进程%d个*************************/:\n",shumu);
   for(int i=0;i<shumu;i++){
   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=0;h<shumu;h++)//当前所有的进程  
  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=0;h<shumu;h++)//当前所有的进程
  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+1;j<shumu;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已被杀死!\n",neicun[k].pid);                                //显示进程已被杀死 
 
}
百度网友ac832a5f2
2011-11-02
知道答主
回答量:11
采纳率:0%
帮助的人:7.3万
展开全部
不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式