41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
int main(int argc, char** argv){
|
|
char buff[1028];
|
|
char p_name[1028];
|
|
int* PIDs = malloc(100*sizeof(int));
|
|
if(argc<2){
|
|
printf("Usage :\nfirst parameter is the name of the program to be killed. it'll then ask you which one that matches do you want to kill\n");
|
|
}
|
|
else if(argv[1][0]=='-'){
|
|
switch(argv[1][1]){
|
|
case 'h':
|
|
printf("Usage :\nfirst parameter is the name of the program to be killed. it'll then ask you which one that matches do you want to kill\n");
|
|
break;
|
|
case 'v':
|
|
printf("v0.1\n");
|
|
break;
|
|
default:
|
|
printf("Unknown option : -%c\n",argv[1][1]);
|
|
break;
|
|
}
|
|
}
|
|
else{
|
|
char* cmd= malloc(18+strlen(argv[1]));
|
|
sprintf(cmd,"ps aux | grep %s",argv[1]);
|
|
FILE* c = popen(cmd,"r");
|
|
int i=0;
|
|
printf("which one do you want to kill ?\n");
|
|
while(fgets(buff,1028,c)!=NULL){
|
|
sscanf(buff,"%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s",p_name,PIDs+i,p_name,p_name,p_name,p_name,p_name,p_name,p_name,p_name,p_name);
|
|
printf("%d : %s\n",i,p_name);
|
|
i++;
|
|
}
|
|
scanf("%d",&i);
|
|
sprintf(cmd,"/usr/bin/kill -SIGKILL %d",PIDs[i]);
|
|
system(cmd);
|
|
}
|
|
}
|