Функция system()

  Илья Быконя  | 

    | 

  Обновл. 29 Авг 2019  | 

 470

В этом уроке мы рассмотрим функцию system(): что это такое и с чем его едят.

Командная строка

Определение функции system() находится в заголовочном файле cstdlib, её объявление выглядит следующим образом:

Мы к нему ещё вернёмся, но, чтобы в полной мере понять, для чего вообще нужна функция system() и что она делает, нам нужно познакомиться с командной строкой.

Командная строка — это специальная программа, позволяющая управлять операционной системой при помощи текстовых команд, вводимых в окне приложения. Её интерфейс полностью текстовый, в отличие от привычного вида операционной системы. Она представляет собой некий универсальный инструмент управления системой Windows, позволяющий выполнять различные задачи, не переключаясь между множеством окон/меню. Можно быстро изменить параметры сети, настройки безопасности, проверить или отформатировать диски и выполнить многие другие функции за считанные секунды.

На заре своего создания операционные системы не имели графического интерфейса, все действия выполнялись с помощью команд, набранных на клавиатуре. После появления графического интерфейса командная строка не исчезла из системы. Большинство пользователей рано или поздно сталкиваются с командной строкой, а некоторые вообще могут даже и не подозревать о её существовании.

Командная строка часто используется для решения проблем, возникающих на компьютере/ноутбуке, когда другие способы себя исчерпали. Для того, чтобы запустить приложение командной строки, вам нужно нажать комбинацию клавиш Win+R и ввести следующую команду:

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

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


Командная строка имеет свой собственный набор команд. Например, введите ping ravesli.com, чтобы измерить пинг (время, за которое файлы преодолевают расстояние от вашего компьютера до сервера и обратно):

Команда systeminfo позволяет собрать данные о системе, в том числе об установленных обновлениях и информацию о сети. В графическом интерфейсе получение таких данных не предусмотрено.

Ещё несколько команд:

   команда cls удаляет весь текст с экрана консоли (очищает экран);

   команда pause приостанавливает выполнение текущей программы;

   команда date выводит текущую дату в формате дд.мм.гг.

Для просмотра полного списка команд используется команда help, она выводит имена команд и краткое описание того, что они делают. Чтобы посмотреть более полное описание отдельной команды, введите одну из следующих двух конструкций:

   имя_команды /? (например, cls /? или date /?);

   help имя_команды (например, help cls или help date).

Какое ещё практическое применение этих команд может быть? Представьте себе онлайн-игру, в которой нам необходимо замерять пинг каждого игрока и, если он слишком высокий, советовать ему сменить сервер или проверить подключение к интернету. Делать это вручную — глупо, ведь игроков может быть огромное количество (например, сотни тысяч), но функция system() позволяет это сделать прямо из кода. Или, например, нам нужно записать дату возникших ошибок: мы можем это сделать с помощью конструкции system(date > log.txt);.

Что происходит при вводе команды?

Вот примерно следующее:

Задачей командного процессора (интерпретатора) является считывание текста, введённого пользователем, проверка его на синтаксические ошибки, и, если команда была введена корректно — передача центральному процессору на выполнение.

Командный процессор не знает, откуда ему поступают команды, поэтому не имеет значения, какой инструмент вы используете: функцию system() или командную строку. Список команд в вышесказанных инструментах абсолютно одинаков, следующие две строки делают одно и тоже:

   командная строка: ping ravesli.com

   код: system(ping ravesli.com);

Любая команда из командной строки может быть воспроизведена в коде с помощью функции system(), как в примере выше.

Примеры использования функции system()


Предположим, что нам нужно очистить экран от текста:

Ещё можно поменять цвет вывода с помощью команды color. Вместе с командой color вам нужно передать два шестнадцатеричных числа, написанных слитно:

   первое число = цвет фона;

   второе число = цвет текста.

Например:

Результат выполнения программы выше:

Примечание: Если вы не укажете свои цвета или укажете два одинаковых числа (например, АА или 22), то использоваться будут значения по умолчанию (чёрный фон с белым текстом).

Вот полный список всех цветов:

   0 = Черный

   1 = Синий

   2 = Зеленый

   3 = Голубой

   4 = Красный

   5 = Лиловый

   6 = Желтый

   7 = Белый

   8 = Серый

   9 = Светло-синий

   A = Светло-зеленый

   B = Светло-голубой

   C = Светло-красный

   D = Светло-лиловый

   E = Светло-желтый

   F = Ярко-белый

На этом возможности функции system() не заканчиваются, но целью этого урока было лишь ознакомление с данным функционалом.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (6 оценок, среднее: 4,67 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *