[Linux] Параметры командной строки и приоритет процесса

[Linux] Параметры командной строки и приоритет процесса

Параметры командной строки

Понятие параметров командной строки

Параметры командной строки — это параметры, вводимые в командной строке при запуске программы.

Получение параметров командной функции

Функция main в языке C имеет два параметра для получения параметров командной строки, а именно argc и argv.Даже если параметры основной функции не указаны явно, компилятор автоматически добавит и получит параметры во время компиляции, но они не будут указано явно. Невозможно использовать параметр:

int main(int argc, char *argv[]);

При запуске программы необходимо в командной строке вводить параметры.Суть параметров - это строка.Перед передачей в основную функцию они будут разделены пробелами, а затем переданы отдельно. Параметр argc записывает количество переданных параметров, а параметр argv записывает адрес каждого параметра:

изображение-20230825134110559

Напишите подтверждение кода

Напишите следующий код, чтобы убедиться, что основная функция принимает параметры командной строки:

#include <stdio.h>

int main(int argc, char *argv[])
{
    
    
  int i = 0;
  for (i = 0; i < argc; i++)
  {
    
    
      printf("argv[%d]->%s\n", i, argv[i]);
  }
  return 0;
}

Тест после успешной компиляции:

изображение-20230825134818559

Дополнение: Именно потому, что основная функция может получать параметры командной строки, реализована функция добавления опций при использовании инструкций Linux.

приоритет процесса

Концепция приоритета процесса

Приоритет процесса относится к порядку распределения ресурсов ЦП. Процессы с более высоким приоритетом имеют приоритетные права выполнения.

Причина появления приоритета процесса: Системных процессов много, но ресурсов ЦП мало, а то и один, поэтому между процессами существует конкуренция. Чтобы эффективно выполнять задачи и более разумно конкурировать за соответствующие ресурсы, приоритет отдается.

ПРИ и НИ

Введите параметры для просмотра системного процесса в системе Linux ps -l:

изображение-20230825140845597

Среди множества данных два параметра, связанные с приоритетом, — это PRI и NI.

  • PRI: представляет приоритет, с которым этот процесс может быть выполнен. Чем меньше значение, тем раньше он будет выполнен.

  • NI: представляет собой хорошее значение этого процесса, которое представляет собой измененное значение приоритета, с которым процесс может быть выполнен.

PRI = начальное значение приоритета + приятное значение.

Диапазон значений nice — [-20,19). Если приоритет определенного процесса слишком высок или слишком низок, это может привести к тому, что другие процессы не смогут быть запланированы или сам процесс не может быть запланирован, поэтому значение nice имеет диапазон.

Используйте верхнюю команду, чтобы изменить значение nice.

Напишите следующий код, чтобы проверить модификацию значения nice:

#include <stdio.h>
#include <unistd.h>

int main()
{
    
    
  while(1)
  {
    
    
    printf(".");
    fflush(stdout);
    sleep(1);
  }
  return 0;
}

Запустите после успешной компиляции и откройте два дополнительных терминала, введите topкоманду в один и введите ps -alкоманду в другой:

изображение-20230825143626926

Нажмите r в верхнем процессе:

изображение-20230825143651375

В верхнем процессе введите идентификатор процесса, который нужно изменить на хороший:

изображение-20230825143732282

Введите приятное значение, которое нужно изменить:

изображение-20230825143825468

Используйте ps -alкоманду для просмотра:

изображение-20230825143853689

Поскольку начальное значение равно 80, а хорошее значение равно 10, окончательный PRI равен 90.

рекомендация

отblog.csdn.net/csdn_myhome/article/details/132509755