日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

在Unix系統(tǒng)中利用程序實現(xiàn)Kill命令

【在Unix系統(tǒng)中利用程序實現(xiàn)Kill命令】
在正常情況下,一般先通過 Unix 系統(tǒng)的 ps命令,找到相關進程的進程號(pid),然后用 kill 9 pid 終止這些進程 。這些操作對計算機專業(yè)人員很簡單,但對業(yè)務人員來說,卻是比較復雜的操作 。如果能利用一段程序,業(yè)務人員只需要輸入終端號,即可殺死該終端的所有進程并重新激活,就可以簡化這種操作,提高工作效率 。本文簡單介紹這種程序的實現(xiàn)方法 。
程序的功能是根據(jù)終端號殺死進程并激活終端,操作上只要在另一臺終端上執(zhí)行 killtty ttyname即可,其中ttyname 是需要激活的終端號 。程序的實現(xiàn)原理是根據(jù)輸入的終端號,找到該終端運行的所有進程的進程號,并把這些進程號寫入文件 。然后由大到小依次讀出所有的進程號,并執(zhí)行Unix的系統(tǒng)命令 kill(pid,SIGKILL),將該進程殺死 。程序的源代碼如下:
#include
#include
#include
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的系統(tǒng)調用問題,請參考有關的技術資料,這里不再贅述 。該程序在SCO OpenServer 5.04下編譯通過,可直接在該系統(tǒng)中編譯運行 。

    推薦閱讀