这是一个非常小的“杀戮”相关程序。该程序正在执行,但我无法弄清楚代码。任何人都可以让我理解下面的代码。
int main(int argc ,char **argv)
{
if(argc < 2)
{
printf("usage : ./kill PID");
return -1;
}
kill(atoi(argv[1]),SIGKILL);
return 0;
}
答案 0 :(得分:3)
它接受程序的第一个参数(argv[1]
),将其转换为整数(atoi
- ascii到整数)并将SIGKILl(9)信号发送到具有该进程id的进程
if(argc < 2)
只是检查是否提供了足够的参数,return -1
退出程序并使用退出代码!= 0
来表示终止失败。
答案 1 :(得分:3)
基本上,它只是检查是否提供了参数。 if(argc < 2)
表示该程序的参数少于两个。请注意,程序名称本身也是一个参数,这就是argc < 2
而不是argc < 1
的原因。确定后,将调用内置kill
函数。此方法的第一个参数是一个整数,这就是为什么第二个参数(PID,表示为字符串)被解析为具有atoi
的整数。 kill
的第二个参数是信号,在本例中为SIGKILL
。其他信号,例如SIGHUP
也可能已被使用,但由于此程序“杀死”,因此使用SIGKILL
。