Рубрики

system () в C / C ++

system () используется для вызова команды операционной системы из программы на C / C ++.

    int system(const char *command);

Примечание: для вызова системы необходимо включить stdlib.h или cstdlib.

Используя system (), мы можем выполнить любую команду, которая может быть запущена на терминале, если операционная система позволяет. Например, мы можем вызвать system («dir») в Windows и system («ls»), чтобы вывести список содержимого каталога.

Написание программы на C / C ++, которая компилирует и запускает другую программу?
Мы можем вызвать gcc из нашей программы, используя system (). Ниже приведен код, написанный для Linux. Мы можем легко изменить код для запуска в Windows.

// Программа на C ++, которая компилирует и запускает другой C ++
// программа
#include <bits/stdc++.h>

using namespace std;

int main ()

{

    char filename[100];

    cout << "Enter file name to compile ";

    cin.getline(filename, 100);

  

    // Создать команду для выполнения. Например, если вход

    // имя файла a.cpp, тогда str содержит "gcc -o a.out a.cpp"

    // Здесь -o используется для указания имени исполняемого файла

    string str = "gcc ";

    str = str + " -o a.out " + filename;

  

    // Преобразовать строку в const char *, как того требует система

    // параметр типа const char *

    const char *command = str.c_str();

  

    cout << "Compiling file using " << command << endl;

    system(command);

  

    cout << "\nRunning file ";

    system("./a.out");

  

    return 0;

}

system () против использования библиотечных функций:
Некоторые общие применения system () в ОС Windows: system («пауза»), которая используется для выполнения команды pause и заставляет экран / терминал ждать нажатия клавиши, и system («cls»), которая используется для экран / терминал чист.

Однако следует избегать вызова системной команды по следующим причинам:

  1. Это очень дорогой и ресурсоемкий вызов функции
  2. Это не переносимо : использование system () делает программу очень непереносимой, т. Е. Это работает только в системах, в которых есть команда pause на системном уровне, таких как DOS или Windows. Но не Linux, MAC OSX и большинство других.

Давайте возьмем простой код C ++ для вывода Hello World, используя систему («пауза») :

// Программа на C ++, которая останавливает экран в конце в ОС Windows
#include <iostream>

using namespace std;

int main ()

{

    cout << "Hello World!" << endl;

    system("pause");

    return 0;

}

Вывод вышеуказанной программы в ОС Windows:

Hello World!
Press any key to continue…

Эта программа зависит от ОС и использует следующие тяжелые шаги.

  • Он приостанавливает вашу программу и одновременно вызывает операционную систему, чтобы открыть оболочку операционной системы.
  • ОС находит паузу и выделяет память для выполнения команды.
  • Затем он освобождает память, выходит из операционной системы и возобновляет работу программы.

Вместо использования системы («пауза») мы также можем использовать функции, которые изначально определены в C / C ++.

Давайте возьмем простой пример для вывода Hello World с помощью cin.get ():

// Замена system () библиотечной функцией
#include <iostream>
#include <cstdlib>

using namespace std;

int main ()

{

    cout << "Hello World!" << endl;

    cin.get();  // или getchar ()

    return 0;

}

Выход программы:

 Hello World!

Таким образом, мы видим, что как system («pause»), так и cin.get () фактически выполняют ожидание нажатия клавиши, но cin.get () не зависит от ОС и не выполняет вышеуказанные действия. приостановить программу.
Аналогично, на языке C getchar () может использоваться для приостановки программы без вывода сообщения «Нажмите любую клавишу для продолжения…».

Распространенный способ проверить, можем ли мы запускать команды, используя system () в ОС?
Если мы передаем нулевой указатель вместо строки для параметра команды, система возвращает ненулевое значение, если командный процессор существует (или система может работать). В противном случае возвращает 0.

// C ++ программа для проверки, можем ли мы запускать команды, используя
// system ()
#include <iostream>
#include <cstdlib>

using namespace std;

int main ()

{

    if (system(NULL))

       cout << "Command processor exists";

    else

       cout << "Command processor doesn't exists";

  

    return 0;

}

Обратите внимание, что вышеуказанные программы могут не работать на онлайн-компиляторе, так как системная команда отключена в большинстве онлайн-компиляторов, включая GeeksforGeeks IDE .

Эта статья предоставлена Subhankar Das. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

system () в C / C ++

0.00 (0%) 0 votes