我在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运行终止程序。这是一种不好的测试方式,甚至可能是我的程序挂起的原因吗?提前谢谢!
答案 0 :(得分:0)
删除\n
可以解决问题。
在执行scanf
与kill
一样危险的事情之前,我还会检查SIGKILL
的返回值:
//...
if(scanf("%d", &pid)<=0)
return 1;
printf("Killing %d \n", pid);
//...