无法理解linux的“Kill”程序

时间:2010-11-09 14:36:27

标签: c linux kill

这是一个非常小的“杀戮”相关程序。该程序正在执行,但我无法弄清楚代码。任何人都可以让我理解下面的代码。

int main(int argc ,char **argv)
{
  if(argc < 2)
  {
    printf("usage : ./kill PID");
    return -1;
  }
  kill(atoi(argv[1]),SIGKILL);
  return 0;
}

2 个答案:

答案 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