c shell system programming tutorial with examples
Този урок дава подробен отчет за C ++ Shell или системно () повикване, което се използва за извикване на командата на операционната система от програма C ++.
В света на софтуерното програмиране повечето API на операционната система са насочени към C. Езикът C ++ осигурява директна поддръжка за извикване на C функции от кода C ++.
Следователно в този случай C ++ също се превръща в системен език за програмиране. C ++ предоставя команда “system ()” за извикване на командите на операционната система от програмата C / C ++.
С други думи, можем да кажем, че командата system () изпълнява команда C ++ на черупката. В този урок ще обсъдим подробно изпълнението на командата или системата () на черупката.
=> Тук разгледайте простите обучителни серии C ++.
Какво ще научите:
- Системни повиквания на C ++
- Системна пауза на C ++
- Функции на библиотеката System Vs
- Заключение
- Препоръчително четене
Системни повиквания на C ++
Сега нека обсъдим системното обаждане и неговите подробности с примери.
Прототип на функция: система int (команда const char *);
Параметри:
command => C-низ, съдържащ командата, която трябва да бъде изпълнена.
Ако е предаден нулев указател, се прави само проверка за командния процесор.
Възвръщаема стойност: Връща стойност int. Върнатата стойност зависи от това дали низът в стил C е зададен като аргумент или е зададен нулев указател.
- Нулев указател => Ако е посочен нулевият указател, той връща стойност, различна от нула, ако командният процесор е наличен и нула в противен случай.
- Посочената команда => Когато командата е посочена, тогава кодът на състоянието обикновено се връща, но върнатата стойност зависи от изпълнението на системата и библиотеката.
Описание: Системната команда изпълнява команда, предоставена като аргумент. Стойността, върната при изпълнение на командата, обикновено зависи от изпълнението на системата и библиотеката. Ако вместо команда е предаден нулев указател, тогава това повикване просто проверява дали командният процесор е достъпен или не.
Извикването връща ненулева стойност, ако командният процесор е на разположение, и нула в противен случай.
Използвайки system (), можем да изпълним почти всяка команда, при условие че операционната система го позволява. Например, можем да стартираме системата („dir“) или системата („ls“) с еднаква лекота. Всъщност можем дори да извикаме компилатора GCC от нашата програма.
По-долу са изброени няколко примера за системни команди, които се използват в C ++ за изпълнение на командите на черупката на C ++.
разлика между тестовете за дим и здравословно състояние
Пример 1:
Този пример показва демонстрация на системна команда с нулев указател като аргумент.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Изход:

В горната програма първо проверяваме дали командният процесор е достъпен, като предаваме null на системното повикване. Ако командният процесор е достъпен, ние изпълняваме командата dir. Ако командният процесор не е достъпен, тогава излизаме от програмата с неуспех.
Пример 2:
Примерът по-долу показва изпълнението на командата ls, при което изходът се превежда в текстов файл „output.txt“. След като системното () повикване бъде изпълнено, ние отпечатваме съдържанието на output.txt.
най - добрият отворен код за лаптоп -
#include #include #include int main() { std::system('ls -l >output.txt'); // execute the UNIX command 'ls -l >test.txt' std::cout << std::ifstream('output.txt').rdbuf(); }
Изход:

Резултатът от горната програма е съдържанието на файла “output.txt”, което не е нищо друго освен изходът на командата ls.
Пример 3:
Програмата C ++ по-долу е продължение на предишния пример. Тук изпълняваме командата ls, която е пренасочена към output.txt с помощта на системно повикване. След това изпълняваме друго системно повикване с командата “rm” (премахване) за премахване на файл output.txt.
След това отново изпълняваме командата ls и този път пренасочваме изхода към друг файл, т.е. text.txt. Накрая отпечатваме съдържанието на файла text.txt.
#include #include #include using namespace std; int main() { // execute the UNIX command 'ls -l >output.txt' system('ls -l >output.txt'); cout << ifstream('output.txt').rdbuf(); // execute the UNIX command 'rm output.txt' system('rm output.txt'); cout<<'removed output.txt'<text.txt' cout<<'ls after removing output.txt & creating text.txt'<text.txt'); cout << ifstream('text.txt').rdbuf(); }
Изход:

Системна пауза на C ++
Командата на системата („пауза“) временно спира операциите при изпълнение. Системното („пауза“) повикване зависи от операционната система и изпълнява следните стъпки:
- Това обаждане временно спира програмата и също така сигнализира на операционната система да отвори обвивката на операционната система.
- Операционната система разпределя паметта за изпълнение на командата.
- След това освобождава паметта, излиза от операционната система и възобновява спряната програма.
Следващата програма показва пример за системно („пауза“) повикване.
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Изход:

Както вече споменахме, системното („пауза“) повикване е много бавно и зависи от операционната система. Посочените по-горе стъпки са трудни за изпълнение.
Освен това системните повиквания могат също да представляват някои рискове за сигурността. Следователно обикновено не разчитаме на системните („пауза“) повиквания в нашите програми.
Вместо това можем да използваме cin.get, за да постигнем същата функционалност като системата („пауза“), както е показано в долната програма.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Изход:

Както е показано по-горе, можем да използваме cin.get за пауза на изхода, докато не натиснем някой клавиш. За разлика от системата („пауза“) не зависи от операционната система. Той също така не следва стъпките, изпълнени, когато изпълняваме системата („пауза“).
Функции на библиотеката System Vs
Системните повиквания зависят от операционната система. Те също са много бавни и тежки за ресурси. Функциите на библиотеката не зависят от операционната система. Те са по-бързи и не консумират твърде много ресурси или памет.
Най-често използваните системни повиквания са за системни („пауза“) и системни („cls“) команди. Функциите на библиотеката са вградени функции, които съдържат функции, свързани с математиката, входно-изходните файлове и т.н.
Заключение
В този урок за C ++ Shell обсъдихме различни системни функции. Видяхме примери за предаване на нулев указател на системна команда, която проверява дали командният процесор е достъпен или не. Също така обсъдихме подробно командата за система („пауза“) и нейните алтернативи.
=> Проверете ВСИЧКИ уроци за C ++ тук.
Препоръчително четене
- Сортиране на черупката в C ++ с примери
- Урок за скриптове на Unix Shell с примери
- Типове на цикъла на Unix Shell: Правете докато цикъл, За цикъл, До цикъл в Unix
- Примери за аритметични и булеви оператори на скрипт на Unix Shell
- Функции на скрипта на Unix Shell с параметри и връщане
- Разширени скриптове на черупки на Unix: масиви, оператори за тестване на файлове и низове, специални променливи
- Урок за регексиране на C ++: Регулярни изрази в C ++ с примери