system () в C / C ++
system () используется для вызова команды операционной системы из программы на C / C ++.
Примечание: для вызова системы необходимо включить stdlib.h или cstdlib.
Используя system (), мы можем выполнить любую команду, которая может быть запущена на терминале, если операционная система позволяет. Например, мы можем вызвать system («dir») в Windows и system («ls»), чтобы вывести список содержимого каталога.
Написание программы на C / C ++, которая компилирует и запускает другую программу?
Мы можем вызвать gcc из нашей программы, используя system (). Ниже приведен код, написанный для Linux. Мы можем легко изменить код для запуска в Windows.
// Программа на C ++, которая компилирует и запускает другой C ++
// программа
#include <bits/stdc++.h>
using namespace std;
cout << «Enter file name to compile » ;
// Создать команду для выполнения. Например, если вход
// имя файла 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;
cout << «\nRunning file » ;
system () против использования библиотечных функций:
Некоторые общие применения system () в ОС Windows: system («пауза»), которая используется для выполнения команды pause и заставляет экран / терминал ждать нажатия клавиши, и system («cls»), которая используется для экран / терминал чист.
Однако следует избегать вызова системной команды по следующим причинам:
- Это очень дорогой и ресурсоемкий вызов функции
- Это не переносимо : использование system () делает программу очень непереносимой, т. Е. Это работает только в системах, в которых есть команда pause на системном уровне, таких как DOS или Windows. Но не Linux, MAC OSX и большинство других.
Давайте возьмем простой код C ++ для вывода Hello World, используя систему («пауза») :
// Программа на C ++, которая останавливает экран в конце в ОС Windows
#include <iostream>
using namespace std;
cout << «Hello World!» << endl;
Вывод вышеуказанной программы в ОС Windows:
Эта программа зависит от ОС и использует следующие тяжелые шаги.
- Он приостанавливает вашу программу и одновременно вызывает операционную систему, чтобы открыть оболочку операционной системы.
- ОС находит паузу и выделяет память для выполнения команды.
- Затем он освобождает память, выходит из операционной системы и возобновляет работу программы.
Вместо использования системы («пауза») мы также можем использовать функции, которые изначально определены в C / C ++.
Давайте возьмем простой пример для вывода Hello World с помощью cin.get ():
// Замена system () библиотечной функцией
#include <iostream>
#include <cstdlib>
using namespace std;
cout << «Hello World!» << endl;
cin.get(); // или getchar ()
Таким образом, мы видим, что как system («pause»), так и cin.get () фактически выполняют ожидание нажатия клавиши, но cin.get () не зависит от ОС и не выполняет вышеуказанные действия. приостановить программу.
Аналогично, на языке C getchar () может использоваться для приостановки программы без вывода сообщения «Нажмите любую клавишу для продолжения…».
Распространенный способ проверить, можем ли мы запускать команды, используя system () в ОС?
Если мы передаем нулевой указатель вместо строки для параметра команды, система возвращает ненулевое значение, если командный процессор существует (или система может работать). В противном случае возвращает 0.
// C ++ программа для проверки, можем ли мы запускать команды, используя
// system ()
#include <iostream>
#include <cstdlib>
using namespace std;
if ( system (NULL))
cout << «Command processor exists» ;
cout << «Command processor doesn’t exists» ;
Обратите внимание, что вышеуказанные программы могут не работать на онлайн-компиляторе, так как системная команда отключена в большинстве онлайн-компиляторов, включая GeeksforGeeks IDE .
Эта статья предоставлена Subhankar Das. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Структура программы на языке Си
Программа на языке Си состоит из одной или более подпрограмм, называемых функциями .
Язык Си является блочно-структурированным. Каждый блок заключается в фигурные скобки <> .
Основным блоком в программе консольного приложения на языке Си является главная функция, имеющая имя main() .
Каждое действие в языке Си заканчивается символом «точка с запятой» — ; . В качестве действия может выступать вызов функции или осуществление некоторых операций.
Имя функции — это коллективное имя группы описаний и операторов,
заключенных в блок (фигурные скобки). За именем функции в круглых скобках указываются параметры функции.
Комментарии в языке Си
В языке Си для комментариев используются символы
/* — начало комментария;
*/ — конец комментария.
Вся последовательность, заключенная между этими символами, является комментарием.
Это удобно для написания многострочных комментариев:
Многострочные комментарии также удобно использовать при отладке для сокрытия от выполнения части кода.
В дополнение к этому, для написания коротких комментариев могут использоваться символы // . При этом комментарием является все, что расположено после символов // и до конца строки:
Главная функция
При выполнении консольного приложения, написанного на языке Си, операционная система компьютера передаёт управление функции с именем main() . Функцию main() нельзя вызывать из других функций программы, она является управляющей.
Следующие за именем функции круглые скобки предназначены для указания параметров (аргументов), которые передаются в функцию при обращении к ней. В данном случае операционная система не передаёт в функцию main() никаких аргументов, поэтому список аргументов в круглых скобках пустой.
Главную функцию можно записать по-разному:
- int main()
- void main() .
Перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. Последняя запись не будет возвращать значения. Однако void main() — не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения.
При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме.
Для возврата целочисленного значения перед завершением функции добавляется строка
В фигурные скобки заключены описания и операторы.
В общем случае программа может содержать несколько функций. Каждая функция имеет список передаваемых в нее параметров, указанный в круглых скобках, и набор операций, заключенных в блок, ограниченный фигурными скобками.
Пример: Вывод на экран сообщения "Hello, world!" .
Результат работы программы: 
Теперь попробуем написать текст на русском языке.
Результат работы программы:
Проблема русского языка в консольных приложениях заключается в том, что консоль и редактор кода Microsoft Visual Studio поддерживают разные кодовые страницы. Для того, чтобы увидеть русские символы в консоли необходимо поменять кодовую страницу в консоли, чтобы она соответствовала кодовой странице редактора (1251). С этой целью вызывается функция system( "chcp 1251" ) с соответствующей командной строкой. Прототип функции system() содержится в библиотеке <stdlib.h> .
При этом текст программы будет выглядеть следующим образом:
Результат работы программы: 
Какие команды можно передавать в system(" ")
Мне известно пару команд: system("cls") , system("pause") , например. Напишите, пожалуйста, какие еще команды можно использовать в system(" ") и что они выполняют.
![]()
в функцию system можно передавать любые команды, которые могут быть выполнены в командном процессоре или терминале операционной системы
следует знать, что вызов этой функции ресурсоемок, а также использование этой функции делает программы не переносимой между различными системами, так как различные ОС имеют разные команды
для просмотра самых популярных команд windows можно ввести команду help в терминале, или вызвать функцию system с командой help в с++ программе на windows, все команды можно просмотреть в онлайн документации