2010-11-09 3 views
0

Вот очень маленькая программа, связанная с «убить». Программа выполняется, но я не могу понять код. Может кто-нибудь, пожалуйста, запомните код ниже.Невозможно понять программу «Kill» для Linux

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

'SIGKILL', как правило, плохой способ отправить, так как он предотвращает очистку процесса. –

ответ

3

В принципе, он просто проверяет, предоставлен ли аргумент. if(argc < 2) означает, что программа содержит менее двух аргументов. Обратите внимание, что само название программы также является аргументом, поэтому argc < 2, а не argc < 1. Как только это будет определено, вызывается встроенная функция kill. Первый аргумент этого метода - целое число, поэтому второй аргумент (PID, представленный как строка) анализируется на целое число с atoi. Второй аргумент kill - это сигнал, в данном случае SIGKILL. Другие сигналы, такие как SIGHUP, также могут быть использованы, но поскольку эта программа «убивает», она использует SIGKILL.

+0

Спасибо, что очень сэр за то, что помогли мне. –

3

он принимает первый аргумент к программе (argv[1]), преобразует его в целое число (atoi - ASCII в целое число) и посылает (9) сигнал SIGKILL процессу с этим идентификатором процесса.

if(argc < 2) просто проверяет наличие достаточного количества параметров, и return -1 выходит из программы с кодом выхода != 0, чтобы сигнализировать о неудачном завершении.

+0

Спасибо, сэр, но сэр еще одно сомнение может у вас рассказать мне, почему argc <2 и возвращаемое значение -1. –

+0

@Sai Kiran: Это проверяет, что вы предоставили правильные аргументы командной строки. Если нет, он печатает сообщение об использовании и выходит со статусом ошибки (-1). –

Смежные вопросы