‘壹’ c语言里什么叫进程
对于代码来说, 进程就是当前程序运行的载体。 也就是程序本身。
进程结束, 程序也就退出了。
所以 中止进程后, 当前程序所有代码都不会执行。
‘贰’ 用C语言,根据进程名判断该进程是否存在
用popen函数
然后用fgets函耐野数读数据
检查输出结轿亩镇闭粗果
popen("ps -ef|grep proc_name|grep -v grep" ,"r" );
‘叁’ 用c语言编写的进程管理程序
#include<conio.h>
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
structPCB_type
{charpid[100];//进程名输入用字符串健壮性比较好
intpriority;
intcputime;
intstate;
};//缺少“};”
intshumu=0,pid_l;
structPCB_typeneicun[20];
structPCB_typehc[10];
intmax=0;
intnumber=0;
voidcreate();
voidrun();
voidhuanchu();
voidkill();
intmain()
{
intn,a;
n=1;
system("color1d");
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)
{case1:
create();
printf(" pressanykeytogoon~");
getch();
break;
case2:
run();
printf(" pressanykeytogoon~");
getch();
break;
case3:
huanchu();
printf(" pressanykeytogoon~");
getch();
break;
case4:
kill();
printf(" pressanykeytogoon~");
getch();
break;
case5:
exit(0);
default:
n=1;
break;
}
}
}
voidcreate()
{
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(" 创建进程成功! ");
}
voidrun()
{
if(shumu<=0)//查看//判断是否存在进程
{
printf("当前状态无进程,按任意键继续创建进程 ");
return;
}
intmax=0;
for(inti=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("color5F");
printf("/*********************当前已有进程%d个*************************/: ",shumu);
for(inti=0;i<shumu;i++){
printf("进程编号:%d",i+1);
printf(" /***********正在运行进程程序名:%s*************************/ ",neicun[i].pid);
printf(" /***********该进程的优先级:%d*****************************/ ",neicun[i].priority);
printf(" /***********该进程的需要运行时间:%d***********************/ ",neicun[i].cputime);
printf(" /***********该进程的状态:%d(1为等待,2就绪,3为运行)******/ ",neicun[i].state);}//这里增加显示当前运行的进程
}
}
/*换出*/
voidhuanchu()
{
intk;
if(shumu<=0)//判断是否存在进程
{
printf("当前进程数目为0,不能执行该操作 ");
return;
}
printf("当前已有进程%d个: ",shumu);
for(inth=0;h<shumu;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);//换出结果提示
}
voidkill()
{
if(shumu<=0)//对存在的进程进行判断
{
printf("当前进程数目为0,不能执行该操作 ");
return;
}
intk=0;
printf("/******************当前已有进程%d个******************/: ",shumu);
for(inth=0;h<shumu;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(intj=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已被杀死! ",neicun[k].pid);//显示进程已被杀死
}
‘肆’ 如何仅用c语言实现查看系统的进程,和进程名
#include<stdlib.h>塌镇
#include<stdio.h>
voidmain()手闹
{
//显示所有的团薯粗进程
system("tasklist");
system("pause");
}
显示正在运行的进程