在Unix系统中利用程序实现Kill命令
在正常情况下,一般先通过 Unix 系统的 ps命令,找到相关进程的进程号(pid),然后用 kill 9 pid 终止这些进程。这些操作对计算机专业人员很简单,但对业务人员来说,却是比较复杂的操作。如果能利用一段程序,业务人员只需要输入终端号,即可杀死该终端的所有进程并重新激活,就可以简化这种操作,提高工作效率。本文简单介绍这种程序的实现方法。
程序的功能是根据终端号杀死进程并激活终端,操作上只要在另一台终端上执行 killtty ttyname即可,其中ttyname 是需要激活的终端号。程序的实现原理是根据输入的终端号,找到该终端运行的所有进程的进程号,并把这些进程号写入文件。然后由大到小依次读出所有的进程号,并执行Unix的系统命令 kill(pid,SIGKILL),将该进程杀死。程序的源代码如下:
#include<stdio.h>
#include<sys/types.h>
#include<signal.h>
main(argc,argv)
int argc;
char *argv[];
{
FILE *fp;
char fname[50],pscmd[50],ttyname[10];
if(argc< 2){
printf(“usage:%s /dev/ttyname|ttyname|name}\n”,argv[0]);
exit(0);
}
strcpy(fname,“/tmp/psout”);
strcat(fname,argv[1]);
if(!strncmp(argv[1],“/dev/”,5)){
strncpy(ttyname,argv[1]+5,9);
}
else if(!strncmp(argv[1],“tty”,3))
strcpy(ttyname,argv[1]);
else{
strcpy(ttyname,“tty”);
strcat(ttyname,argv[1]);
}
sprintf(pscmd,“ps -o \"pid=\“-t %s>%s”,ttyname,fname);
if(system(pscmd)<0){
exit(-1);
}
kill_pid(fname);
}
kill_pid(filename)
char *filename;
{
FILE *fp;
char ch,pid[10];
int *ipid;
ipid=(int *)(malloc(sizeof(int)));
if((fp=fopen(filename,“r”))==NULL){
exit(-1);
}
while(fgets(pid,20,fp)!=NULL){
*ipid=atoi(pid);
ipid++;
}
fclose(fp);
while(--ipid){
kill(*ipid,SIGKILL);
}
}
上述程序中有关Unix的系统调用问题,请参考有关的技术资料,这里不再赘述。该程序在SCO OpenServer 5.04下编译通过,可直接在该系统中编译运行。
- · 关于计算机安全问题的论述
- · Unixware7目录层次结构和文件类型
- · 一台磁带机在两台scounix 使用大家参考
- · 在SCO OpenServer 5中用configure配置核心参数(一)
- · 在SCO OpenServer 5中用configure配置核心参数(二)
- · 在SCO OpenServer 5中用configure配置核心参数(三)
- · 在SCO OpenServer 5中用configure配置核心参数(四)
- · 在SCO OpenServer 5中用configure配置核心参数(五)
- · 在SCO OpenServer 5中用configure配置核心参数详解
- · SCO UNIX作业调度
- · UNIX下执行文件的减肥工具strip
- · 限制IP登录
- · uuencode编码和解码
- · 金融领域UNIX网络系统的安全管理策略
- · 文件特殊权限的解释
- · 从服务器能够到达的所有网络设备里面提取设备配置信息
- · 从服务器能够到达的所有网络设备里面提取设备配置信息
- · SQL SERVER 11.0.x FOR SCO OPENSERVER 5
- · unix下的动态链接库
- · 在UNIX 系统下得到字符点阵信息
- · 怎样在UNIX系统中使用自定义功能键
- · 如何自动杀死UNIX僵死的进程
- · 构建Apache+PHP4+MySQL+PGSQL for UnixWare 7.1.1
- · 装载----"菜鸟"救盘记
- · SCO OPENSERVER 下custom发布软件的制作方法
- · SCO OPENSERVER上安装apache
- · SCO UNIX做简单路由器
- · UNIX中的文件切割
- · SCO UNIX5 的打印管理
- · 构建SCO UNIX下的Web服务器
- · 关于Informix数据库灵活备份的探讨
- · Informix-Online数据库的查询优化策略
- · SCO UNIX系统网络风险防范
- · 在Unix系统下用shell制作通用界面
- · 自动杀死Unix僵死的进程
- · UNIX文件系统的挽救技巧
- · 构筑Unix系统内防火墙体系的多种方案
- · 如何构建Informix分布式数据库访问
