c shell system programming tutorial with examples
Acest tutorial oferă o prezentare detaliată a apelului C ++ Shell sau system () care este utilizat pentru a invoca comanda sistemului de operare dintr-un program C ++.
În lumea programării software, majoritatea API-urilor sistemului de operare sunt direcționate către C. Limbajul C ++ oferă suport direct pentru apelarea funcțiilor C din codul C ++.
Prin urmare, în acest caz, C ++ devine și un limbaj de programare a sistemului. C ++ oferă o comandă „system ()” pentru a invoca comenzile sistemului de operare din programul C / C ++.
Cu alte cuvinte, putem spune că comanda system () execută o comandă shell C ++. În acest tutorial, vom discuta în detaliu execuția comenzii shell sau a sistemului ().
=> Explorați aici seria de formare simplă C ++.
Ce veți învăța:
- Apeluri de sistem C ++
- Pauza sistemului C ++
- Funcțiile System Vs Library
- Concluzie
- Lectură recomandată
Apeluri de sistem C ++
Acum, să discutăm apelul de sistem și detaliile acestuia cu exemple.
Prototipul funcției: int sistem (comanda const char *);
Parametri:
command => Un șir C care conține comanda de executat.
Dacă este trecut un pointer nul, atunci se face doar o verificare pentru procesorul de comandă.
Valoare returnată: Returnează o valoare int. Valoarea returnată depinde dacă șirul în stil C este specificat ca argument sau dacă este specificat un indicator nul.
- Indicator nul => Dacă este specificat indicatorul nul, atunci returnează o valoare diferită de zero dacă procesorul de comandă este disponibil și zero în caz contrar.
- Comanda specificată => Când este specificată comanda, atunci codul de stare este de obicei returnat, dar valoarea returnată depinde de implementarea sistemului și a bibliotecii.
Descriere: Comanda de sistem execută o comandă furnizată ca argument. Valoarea returnată prin executarea comenzii depinde de obicei de implementarea sistemului și a bibliotecii. Dacă este trecut un pointer nul în locul unei comenzi, atunci acest apel verifică pur și simplu dacă procesorul de comandă este disponibil sau nu.
Apelul returnează o valoare diferită de zero dacă procesorul de comandă este disponibil și zero în caz contrar.
Folosind system (), putem rula aproape orice comandă, cu condiția ca sistemul de operare să o permită. De exemplu, putem rula sistemul („dir”) sau sistemul („ls”) cu aceeași ușurință. De fapt, putem invoca chiar și compilatorul GCC din programul nostru.
Mai jos sunt prezentate câteva exemple de comenzi de sistem care sunt utilizate în C ++ pentru a executa comenzile shell C ++.
Exemplul 1:
Acest exemplu arată demonstrația comenzii de sistem cu un pointer nul ca argument.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Ieșire:

În programul de mai sus, verificăm mai întâi dacă procesorul de comandă este disponibil prin trecerea nulă la apelul de sistem. Dacă procesorul de comandă este disponibil, atunci executăm comanda dir. Dacă procesorul de comandă nu este disponibil, atunci ieșim din program cu o eroare.
Exemplul 2:
Exemplul de mai jos arată executarea comenzii ls în care ieșirea este canalizată către un fișier text „output.txt”. După executarea apelului system (), imprimăm conținutul rezultatului.txt.
ce este o variabilă dublă în java
#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(); }
Ieșire:

Ieșirea programului de mai sus este conținutul fișierului „output.txt” care nu este altceva decât ieșirea comenzii ls.
Exemplul 3:
Programul C ++ de mai jos este continuarea exemplului anterior. Aici executăm comanda ls care este redirecționată către output.txt folosind un apel de sistem. Apoi executăm un alt apel de sistem cu comanda „rm” (eliminare) pentru a elimina fișierul output.txt.
După aceasta, executăm din nou comanda ls și de data aceasta redirecționăm ieșirea către un alt fișier, adică text.txt. În cele din urmă, imprimăm conținutul fișierului 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(); }
Ieșire:

Pauza sistemului C ++
Comanda de sistem („pauză”) oprește temporar operațiunile atunci când este executată. Apelul de sistem („pauză”) depinde de sistemul de operare și efectuează următorii pași:
- Acest apel suspendă temporar programul și semnalează, de asemenea, sistemul de operare pentru a deschide shell-ul sistemului de operare.
- Sistemul de operare alocă memoria pentru executarea comenzii.
- Apoi, repartizează memoria, iese din sistemul de operare și reia programul suspendat.
Următorul program prezintă un exemplu de apel de sistem („pauză”).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Ieșire:

După cum sa menționat deja, apelul de sistem („pauză”) este foarte lent și depinde de sistemul de operare. Pașii menționați mai sus sunt grei de executat.
În plus, apelurile de sistem pot prezenta, de asemenea, unele riscuri de securitate. Prin urmare, de obicei nu ne bazăm pe apelurile de sistem („pauză”) din programele noastre.
În schimb, putem folosi cin.get pentru a obține aceeași funcționalitate ca un sistem („pauză”) așa cum se arată în programul de mai jos.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Ieșire:

După cum se arată mai sus, putem folosi cin.get pentru a întrerupe ieșirea până când apăsăm o tastă. Spre deosebire de sistem („pauză”) nu depinde de sistemul de operare. De asemenea, nu urmează pașii derulați atunci când executăm sistemul („pauză”).
Funcțiile System Vs Library
Apelurile de sistem depind de sistemul de operare. De asemenea, sunt foarte lente și au resurse mari. Funcțiile bibliotecii nu depind de sistemul de operare. Sunt mai rapide și nu consumă prea multe resurse sau memorie.
Cele mai frecvente utilizări ale apelurilor de sistem sunt pentru comenzi de sistem („pauză”) și sistem („cls”). Funcțiile de bibliotecă sunt funcții încorporate care conțin funcții legate de matematică, I / O de fișiere etc.
Concluzie
În acest tutorial C ++ Shell, am discutat despre diferite funcții ale sistemului. Am văzut exemple de trecere a unui pointer nul la comanda de sistem care verifică dacă procesorul de comandă este disponibil sau nu. De asemenea, am discutat în detaliu comanda sistemului („pauză”) și alternativele sale.
=> Verificați TOATE tutorialele C ++ aici.
Lectură recomandată
- Sortare Shell în C ++ cu exemple
- Tutorial Unix Shell Scripting cu exemple
- Tipuri de bucle Shell Unix: Faceți în timp ce buclați, pentru buclă, până la buclă în Unix
- Unix Shell Script Exemple de operatori aritmetici și booleni
- Unix Shell Script Funcții cu parametri și Return
- Script avansat Unix Shell: matrici, operatori de testare a fișierelor și șirurilor, variabile speciale
- C ++ regex Tutorial: Expresii regulate în C ++ cu exemple