c shell system programming tutorial with examples
Tento tutoriál poskytuje podrobný popis volania C ++ Shell alebo system (), ktoré sa používa na vyvolanie príkazu operačného systému z programu C ++.
Vo svete softvérového programovania je väčšina API operačného systému zameraná na C. Jazyk C ++ poskytuje priamu podporu pre volanie funkcií C z kódu C ++.
Preto sa v tomto prípade C ++ stáva tiež programovacím jazykom systému. C ++ poskytuje príkaz „system ()“ na vyvolanie príkazov operačného systému z programu C / C ++.
Inými slovami, môžeme povedať, že príkaz system () vykoná príkaz shellu C ++. V tomto výučbe sa budeme podrobne zaoberať vykonaním príkazu shell alebo system ().
=> Preskúmajte tu jednoduchú školiacu sériu C ++.
Čo sa dozviete:
- Systémové volania v C ++
- Pozastavenie systému v C ++
- Funkcie knižnice System Vs
- Záver
- Odporúčané čítanie
Systémové volania v C ++
Poďme si teraz predstaviť príklady systémového volania a jeho podrobností.
Funkčný prototyp: int system (príkaz const char *);
Parametre:
command => C-reťazec obsahujúci príkaz, ktorý sa má vykonať.
testovanie otázok na pohovor pre skúsených odborníkov s odpoveďami
Ak je zadaný nulový ukazovateľ, vykoná sa iba kontrola príkazového procesora.
Návratová hodnota: Vráti hodnotu int. Vrátená hodnota závisí od toho, či je reťazec v štýle C zadaný ako argument alebo či je zadaný nulový ukazovateľ.
- Nulový ukazovateľ => Ak je zadaný nulový ukazovateľ, vráti nenulovú hodnotu, ak je k dispozícii príkazový procesor, a inak nulu.
- Zadaný príkaz => Keď je zadaný príkaz, potom sa zvyčajne vráti stavový kód, ale vrátená hodnota závisí od implementácie systému a knižnice.
Popis: Príkaz systému vykoná príkaz dodaný ako argument. Hodnota vrátená vykonaním príkazu je zvyčajne závislá od implementácie systému a knižnice. Ak sa namiesto príkazu odovzdá nulový ukazovateľ, potom toto volanie jednoducho skontroluje, či je príkazový procesor k dispozícii alebo nie.
Volanie vráti nenulovú hodnotu, ak je k dispozícii príkazový procesor a inak nula.
Pomocou systému () môžeme spustiť takmer akýkoľvek príkaz za predpokladu, že to operačný systém umožňuje. Napríklad, môžeme systém („dir“) alebo systém („ls“) spustiť rovnako ľahko. V skutočnosti môžeme dokonca vyvolať kompilátor GCC z nášho programu.
Nižšie je uvedených niekoľko príkladov systémových príkazov, ktoré sa používajú v jazyku C ++ na vykonávanie príkazov shellu C ++.
Príklad 1:
Tento príklad ukazuje ukážku systémových príkazov s nulovým ukazovateľom ako argumentom.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Výkon:

Vo vyššie uvedenom programe najskôr skontrolujeme, či je príkazový procesor k dispozícii, a to odovzdaním hodnoty null do systémového volania. Ak je k dispozícii príkazový procesor, vykonáme príkaz dir. Ak príkazový procesor nie je k dispozícii, ukončíme program s chybou.
Príklad 2:
Nasledujúci príklad ukazuje vykonanie príkazu ls, kde je výstup smerovaný do textového súboru „output.txt“. Po vykonaní volania system () vytlačíme obsah output.txt.
kde sledovať anime zadarmo online
#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(); }
Výkon:

Výstupom vyššie uvedeného programu je obsah súboru „output.txt“, ktorý nie je ničím iným ako výstupom príkazu ls.
Príklad 3:
Program C ++ uvedený nižšie je pokračovaním predchádzajúceho príkladu. Tu vykonáme príkaz ls, ktorý je presmerovaný na output.txt pomocou systémového volania. Potom vykonáme ďalšie systémové volanie príkazom „rm“ (remove) na odstránenie súboru output.txt.
Potom opäť vykonáme príkaz ls a výstup tentokrát presmerujeme na iný súbor, teda text.txt. Na záver vytlačíme obsah súboru 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(); }
Výkon:

Pozastavenie systému v C ++
Príkaz systému („pauza“) po vykonaní dočasne zastaví operácie. Systémové („pozastavené“) volanie závisí od operačného systému a vykonáva nasledujúce kroky:
- Toto volanie dočasne pozastaví program a tiež signalizuje operačnému systému, aby otvoril shell operačného systému.
- Operačný systém vyhradzuje pamäť na vykonanie príkazu.
- Potom uvoľní pamäť, ukončí operačný systém a obnoví pozastavený program.
Nasledujúci program zobrazuje príklad systémového hovoru („pauza“).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Výkon:

Ako už bolo spomenuté, systémové („pozastavené“) volanie je veľmi pomalé a závisí od operačného systému. Kroky uvedené vyššie je ťažké vykonať.
Systémové volania môžu navyše predstavovať aj určité bezpečnostné riziká. Preto sa zvyčajne nespoliehame na systémové („pozastavené“) volania v našich programoch.
Namiesto toho môžeme použiť cin.get na dosiahnutie rovnakej funkčnosti ako systém („pozastaviť“), ako je to znázornené v nasledujúcom programe.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Výkon:

Ako je uvedené vyššie, môžeme použiť cin.get na pozastavenie výstupu, kým nestlačíme nejaké tlačidlo. Na rozdiel od systému („pauza“) nezávisí od operačného systému. Taktiež neriadi sa krokmi vykonanými pri spustení systému („pozastavenie“).
Funkcie knižnice System Vs
Systémové volania závisia od operačného systému. Sú tiež veľmi pomalé a náročné na zdroje. Funkcie knižnice nezávisia od OS. Sú rýchlejšie a nespotrebúvajú príliš veľa zdrojov ani pamäte.
Najbežnejšie použitie systémových volaní je pre systémové („pause“) a systémové („cls“) príkazy. Funkcie knižnice sú vstavané funkcie, ktoré obsahujú funkcie súvisiace s matematikou, vstupno-výstupnými súbormi atď.
Záver
V tomto výučbe C ++ Shell sme diskutovali o rôznych systémových funkciách. Videli sme príklady odovzdávania nulového ukazovateľa na systémový príkaz, ktorý kontroluje, či je príkazový procesor k dispozícii alebo nie. Podrobne sme tiež diskutovali o systéme („pause“) a jeho alternatívach.
=> Skontrolujte VŠETKY výukové programy pre C ++ tu.
Odporúčané čítanie
- Shell zoradený v C ++ s príkladmi
- Výukový program pre skriptovanie Unixu s príkladmi
- Typy Unix Shell Loop: Robte Loop, For Loop, Until Loop v Unixe
- Príklady aritmetických a boolovských operátorov Unix Shell Script
- Funkcie Unix Shell Script s parametrami a návratom
- Pokročilé skriptovanie Unix Shell: polia, operátory testovania súborov a reťazcov, špeciálne premenné
- Výukový program pre regex v jazyku C ++: Regulárne výrazy v jazyku C ++ s príkladmi