c shell system programming tutorial with examples
Ovaj vodič daje detaljan prikaz C ++ školjke ili poziva system () koji se koristi za pozivanje naredbe operativnog sustava iz programa C ++.
U svijetu softverskog programiranja, većina API-ja operativnog sustava usmjerena je na C. C ++ jezik pruža izravnu podršku za pozivanje C funkcija iz C ++ koda.
Stoga u ovom slučaju C ++ također postaje sistemski programski jezik. C ++ pruža naredbu 'system ()' za pozivanje naredbi operativnog sustava iz programa C / C ++.
Drugim riječima, možemo reći da naredba system () izvršava naredbu ljuske C ++. U ovom uputstvu detaljno ćemo razgovarati o izvršavanju naredbe ljuske ili sustava ().
=> Ovdje istražite jednostavne serije obuke za C ++.
Što ćete naučiti:
- Pozivi sustava C ++
- Pauza sustava C ++
- Funkcije sustava protiv knjižnice
- Zaključak
- Preporučena literatura
Pozivi sustava C ++
Sada razgovarajmo o sustavnom pozivu i njegovim detaljima s primjerima.
Prototip funkcije: int sustav (naredba const char *);
Parametri:
naredba => C-niz koji sadrži naredbu koju treba izvršiti.
Ako se proslijedi nulti pokazivač, tada se vrši samo provjera za procesor naredbi.
Povratna vrijednost: Vraća vrijednost int. Vraćena vrijednost ovisi o tome je li niz u stilu C naveden kao argument ili je naveden null pokazivač.
- Nulti pokazivač => Ako je naveden null pokazivač, on vraća vrijednost koja nije nula ako je procesor naredbi dostupan, a u suprotnom nula.
- Navedena naredba => Kada je navedena naredba, tada se obično vraća statusni kod, ali vraćena vrijednost ovisi o implementaciji sustava i knjižnice.
Opis: Naredba sustava izvršava naredbu koja se daje kao argument. Vrijednost vraćena izvršavanjem naredbe obično ovisi o implementaciji sustava i knjižnice. Ako se umjesto naredbe prenese null pokazivač, tada ovaj poziv jednostavno provjerava je li procesor naredbi dostupan ili nije.
Poziv vraća vrijednost koja nije nula ako je procesor naredbi dostupan, a nula u suprotnom.
Koristeći system () možemo pokrenuti gotovo bilo koju naredbu pod uvjetom da operativni sustav to dopušta. Na primjer, možemo s jednakom lakoćom pokrenuti sustav (“dir”) ili sustav (“ls”). U stvari, iz našeg programa možemo čak i pozvati GCC kompajler.
U nastavku je navedeno nekoliko primjera sistemskih naredbi koje se u C ++ koriste za izvršavanje naredbi ljuske C ++.
Primjer 1:
Ovaj primjer prikazuje demonstraciju sistemske naredbe s null pokazivačem kao argumentom.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Izlaz:

U gore navedenom programu prvo provjeravamo je li procesor naredbi dostupan prenošenjem nule u sistemski poziv. Ako je procesor naredbi dostupan, izvršavamo naredbu dir. Ako procesor naredbi nije dostupan, tada izlazimo iz programa s greškom.
Primjer 2:
Sljedeći primjer prikazuje izvršavanje naredbe ls pri čemu se izlaz preusmjerava u tekstualnu datoteku 'output.txt'. Nakon izvršenja poziva system () ispisujemo sadržaj 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(); }
Izlaz:

Rezultat gore navedenog programa je sadržaj datoteke 'output.txt', što je ništa drugo do izlaz naredbe ls.
Primjer 3:
Program C ++ u nastavku nastavak je prethodnog primjera. Ovdje izvršavamo naredbu ls koja je preusmjerena na output.txt pomoću sistemskog poziva. Zatim izvršavamo još jedan sistemski poziv s naredbom “rm” (ukloni) za uklanjanje datoteke output.txt.
Nakon toga ponovno izvršavamo naredbu ls i ovaj put izlaz preusmjeravamo u drugu datoteku, tj. Text.txt. Na kraju ispisujemo sadržaj datoteke 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(); }
Izlaz:

Pauza sustava C ++
Naredba sustava ('pauza') privremeno zaustavlja operacije kada se izvrše. Poziv sustava ('pauza') ovisi o operativnom sustavu i izvodi sljedeće korake:
- Ovaj poziv privremeno suspendira program i također signalizira operacijskom sustavu da otvori ljusku operativnog sustava.
- Operativni sustav dodjeljuje memoriju za izvršenje naredbe.
- Zatim oslobađa memoriju, izlazi iz operativnog sustava i nastavlja obustavljeni program.
Sljedeći program prikazuje primjer sistemskog poziva ('pauza').
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Izlaz:

world of warcraft privatni poslužitelj vanilija
Kao što je već spomenuto, poziv sustava ('pauza') vrlo je spor i ovisi o operativnom sustavu. Gore spomenute korake je teško izvršiti.
Uz to, sistemski pozivi mogu predstavljati i neke sigurnosne rizike. Stoga se u našim programima obično ne oslanjamo na sistemske pozive („pauza“).
Umjesto toga, možemo koristiti cin.get za postizanje iste funkcije kao i sustav ('pauza') kao što je prikazano u donjem programu.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Izlaz:

Kao što je gore prikazano, cin.get možemo koristiti za pauziranje izlaza dok ne pritisnemo neku tipku. Za razliku od sustava ('pauza') ne ovisi o operativnom sustavu. Također ne slijedi korake izvršene kada izvršavamo sustav ('pauza').
Funkcije sustava protiv knjižnice
Sistemski pozivi ovise o operativnom sustavu. Također su vrlo spori i opterećeni resursima. Funkcije knjižnice ne ovise o OS-u. Brži su i ne troše previše resursa ili memorije.
Najčešća uporaba sistemskih poziva je za naredbe sustava ('pauza') i sustava ('cls'). Funkcije knjižnice su ugrađene funkcije koje sadrže funkcije povezane s matematikom, I / O datotekama itd.
Zaključak
U ovom tutorijalu za C ++ Shell razgovarali smo o raznim sistemskim funkcijama. Vidjeli smo primjere prosljeđivanja null pokazivača na sistemsku naredbu koja provjerava je li procesor naredbi dostupan ili nije. Također smo detaljno razgovarali o naredbi sustava ('pauza') i njezinim alternativama.
=> Ovdje provjerite SVE tutorijale za C ++.
Preporučena literatura
- Razvrstavanje ljuske na C ++ s primjerima
- Vodič za skripte za Unix Shell sa primjerima
- Tipovi petlje Unix školjke: Radite dok se petljate, za petlju, dok se petlja ne dogodi u Unixu
- Primjeri aritmetičkih i logičkih operatora skripte ljuske Unix
- Funkcije skripte ljuske Unix s parametrima i povratom
- Napredno skriptiranje ljuske Unixa: nizovi, operateri ispitivanja datoteka i nizova, posebne varijable
- Vodič za C ++ regex: Regularni izrazi u C ++ s primjerima