c shell system programming tutorial with examples
Овај водич даје детаљан приказ Ц ++ шкољке или позива систем () који се користи за позивање наредбе оперативног система из програма Ц ++.
У свету софтверског програмирања, већина АПИ-ја оперативног система циљана је на Ц. Ц ++ језик пружа директну подршку за позивање Ц функција из Ц ++ кода.
Отуда, у овом случају, Ц ++ такође постаје системски програмски језик. Ц ++ пружа наредбу „систем ()“ за позивање наредби оперативног система из програма Ц / Ц ++.
Другим речима, можемо рећи да наредба систем () извршава команду љуске Ц ++. У овом упутству детаљно ћемо разговарати о извршавању команде љуске или система ().
=> Овде истражите једноставне серије обуке за Ц ++.
како се користе .јар датотеке
Шта ћете научити:
- Ц ++ системски позиви
- Ц ++ системска пауза
- Функције система против библиотеке
- Закључак
- Препоручено читање
Ц ++ системски позиви
Хајде сада да разговарамо о системском позиву и његовим детаљима са примерима.
Прототип функције: инт систем (наредба цонст цхар *);
Параметри:
цомманд => Ц-стринг који садржи наредбу коју треба извршити.
Ако је прослеђен нулти показивач, тада се врши само провера за процесор наредби.
Повратна вредност: Враћа инт вредност. Враћена вредност зависи од тога да ли је низ у стилу Ц наведен као аргумент или је наведен нулл показивач.
- Нулти показивач => Ако је наведен нулл показивач, он враћа вредност која није нула ако је процесор наредби доступан, а у супротном нула.
- Наведена наредба => Када је наредба наведена, тада се обично враћа статусни код, али враћена вриједност зависи од имплементације система и библиотеке.
Опис: Системска наредба извршава наредбу испоручену као аргумент. Вредност враћена извршавањем наредбе обично зависи од имплементације система и библиотеке. Ако се уместо наредбе пренесе нулл показивач, тада овај позив једноставно проверава да ли је процесор наредби доступан или не.
Позив враћа вредност која није нула ако је процесор наредби доступан, а у супротном нула.
Користећи систем () можемо покренути готово било коју наредбу под условом да оперативни систем то дозвољава. На пример, систем („дир“) или систем („лс“) можемо покретати са једнаком лакоћом. У ствари, чак можемо и да позовемо ГЦЦ компајлер из нашег програма.
У наставку је наведено неколико примера системских наредби које се користе у Ц ++ за извршавање наредби шкољке Ц ++.
Пример 1:
Овај пример приказује демонстрацију системске наредбе са нулл показивачем као аргументом.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Излаз:

У горе наведеном програму прво проверавамо да ли је процесор наредби доступан преношењем нуле у системски позив. Ако је процесор наредби доступан онда извршавамо дир наредбу. Ако процесор наредби није доступан, тада излазимо из програма са грешком.
Пример 2:
Пример у наставку приказује извршавање наредбе лс при чему се излаз пребацује у текстуалну датотеку „оутпут.ткт“. Након извршења позива систем (), исписујемо садржај оутпут.ткт.
10 најбољих веб локација за гледање аниме
#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(); }
Излаз:

Резултат горе наведеног програма је садржај датотеке „оутпут.ткт“, што није ништа друго до излаз наредбе лс.
Пример 3:
Ц ++ програм испод је наставак претходног примера. Овде извршавамо наредбу лс која је преусмерена на оутпут.ткт помоћу системског позива. Затим извршавамо још један системски позив помоћу наредбе „рм“ (уклони) за уклањање датотеке оутпут.ткт.
После овога, поново извршавамо команду лс, а овог пута излаз преусмеравамо у другу датотеку, тј. Тект.ткт. На крају, исписујемо садржај датотеке тект.ткт.
#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(); }
Излаз:

Ц ++ системска пауза
Наредба система („пауза“) привремено зауставља операције када се изврше. Позив система („пауза“) зависи од оперативног система и изводи следеће кораке:
- Овај позив привремено суспендује програм и такође сигнализира оперативном систему да отвори љуску оперативног система.
- Оперативни систем додељује меморију за извршавање наредбе.
- Затим ослобађа меморију, излази из оперативног система и наставља обустављени програм.
Следећи програм приказује пример системског позива („пауза“).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Излаз:

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

Као што је приказано горе, цин.гет можемо користити за паузирање излаза док не притиснемо неки тастер. За разлику од система („пауза“) не зависи од оперативног система. Такође не следи кораке извршене када извршавамо систем („пауза“).
Функције система против библиотеке
Системски позиви зависе од оперативног система. Такође су врло спори и оптерећени ресурсима. Функције библиотеке не зависе од ОС-а. Бржи су и не троше превише ресурса или меморије.
Најчешћа употреба системских позива је за системске („пауза“) и системске („цлс“) наредбе. Функције библиотеке су уграђене функције које садрже функције које се односе на математику, И / О датотеке итд.
Закључак
У овом упутству за Ц ++ Схелл разговарали смо о разним системским функцијама. Видели смо примере прослеђивања нулл показивача системској команди која проверава да ли је процесор команди доступан или не. Такође смо детаљно разговарали о наредби система („пауза“) и њеним алтернативама.
=> Овде погледајте СВЕ туторијале за Ц ++.
Препоручено читање
- Сортирање љуске на Ц ++ са примерима
- Водич за скрипте за Уник Схелл са примерима
- Типови петље Уник шкољке: Радите док се петља, за петљу, док се петља не заврши у Унику
- Примери аритметичких и логичких оператора скрипте љуске Уник
- Функције скрипте Уник љуске са параметрима и повратом
- Напредно скрипта скрипте љуске Уник: низови, оператори за тестирање датотека и низова, посебне променљиве
- Водич за регекс језика Ц ++: Регуларни изрази у језику Ц ++ са примерима