杀死一个进程最终会挂起

时间:2016-02-15 00:04:41

标签: c process

我在C中编写了这个小程序来杀死给定用户输入pid的进程。 但是,当我尝试运行它时,似乎无限期地挂断了kill。

我不太确定我哪里出错了,或者我的测试只是有缺陷,但我会喜欢&感谢一些建议!

int main(void){
 int killpid;
 pid_t pid;

 printf("Input PID of process you would like to kill: \n");
 scanf("%d\n", &pid);

 killpid = kill(pid, SIGKILL);

 if(killpid == -1){
  printf("Termination failed!\n");
  return 0;
 }

 printf("Terminated process [%d]!", pid);
 return 0;
}

要测试我使用ps -e命令列出计算机上的所有进程,并使用当前正在运行的文本编辑器的pid运行终止程序。这是一种不好的测试方式,甚至可能是我的程序挂起的原因吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

删除\n可以解决问题。 在执行scanfkill一样危险的事情之前,我还会检查SIGKILL的返回值:

//...
if(scanf("%d", &pid)<=0)
  return 1;
printf("Killing %d \n", pid);
//...