c shell system programming tutorial with examples
Denne vejledning giver en detaljeret redegørelse for C ++ Shell eller system () -opkaldet, der bruges til at påkalde operativsystemkommandoen fra et C ++ -program.
I softwareprogrammeringsverdenen er de fleste af operativsystemets API'er målrettet mod C. C ++ sprog giver direkte support til at kalde C-funktioner fra C ++ -koden.
Derfor bliver C ++ i dette tilfælde også et systemprogrammeringssprog. C ++ giver en “system ()” - kommando til at påkalde operativsystemets kommandoer fra C / C ++ - programmet.
Med andre ord kan vi sige, at kommandoen system () udfører en C ++ shell-kommando. I denne vejledning vil vi diskutere udførelsen af shell-kommandoen eller systemet () i detaljer.
=> Udforsk Simple C ++ træningsserien her.
Hvad du lærer:
C ++ systemopkald
Lad os nu diskutere systemopkaldet og dets detaljer med eksempler.
Funktionsprototype: int system (const char * kommando);
Parametre:
command => En C-streng, der indeholder kommandoen, der skal udføres.
bedste server at spille på wow
Hvis der sendes en nul-markør, udføres kun en kontrol af kommandoprocessoren.
Returværdi: Returnerer en int-værdi. Den returnerede værdi afhænger af, om C-stilstrengen er angivet som et argument, eller om der er angivet en nul-markør.
- Null Pointer => Hvis nulmarkøren er angivet, returnerer den en værdi, der ikke er nul, hvis kommandoprocessoren er tilgængelig og ellers nul.
- Den angivne kommando => Når kommandoen er specificeret, returneres statuskoden normalt, men den returnerede værdi afhænger af implementeringen af systemet og biblioteket.
Beskrivelse: Systemkommandoen udfører en kommando, der leveres som et argument. Den værdi, der returneres ved udførelse af kommandoen, er normalt afhængig af system- og biblioteksimplementering. Hvis der sendes en nul-markør i stedet for en kommando, kontrollerer dette opkald simpelthen, om kommandoprocessoren er tilgængelig eller ikke.
Opkaldet returnerer en værdi, der ikke er nul, hvis kommandoprocessoren er tilgængelig og nul ellers.
Ved hjælp af system () kan vi køre næsten enhver kommando, forudsat at operativsystemet tillader det. For eksempel, vi kan køre systemet (“dir”) eller systemet (“ls”) med lige lethed. Faktisk kan vi endda påkalde GCC-compileren fra vores program.
Nedenfor er nogle eksempler på systemkommandoer, der bruges i C ++ til at udføre C ++ shell-kommandoer.
Eksempel 1:
Dette eksempel viser systemkommandodemonstrationen med en nul pointer som argument.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Produktion:

I ovenstående program kontrollerer vi først, om kommandoprocessoren er tilgængelig ved at sende null til systemopkaldet. Hvis kommandoprocessoren er tilgængelig, udfører vi dir-kommandoen. Hvis kommandoprocessoren ikke er tilgængelig, afslutter vi programmet med en fejl.
Eksempel 2:
Eksemplet nedenfor viser udførelsen af ls-kommandoen, hvor output sendes til en tekstfil 'output.txt'. Når system () -opkaldet er udført, udskriver vi indholdet af output.txt.
hvordan man åbner xml-filer i word
#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(); }
Produktion:

Outputtet fra ovenstående program er indholdet af filen “output.txt”, som kun er output fra ls-kommandoen.
Eksempel 3:
C ++ -programmet nedenfor er fortsættelsen af det foregående eksempel. Her udfører vi kommandoen ls, der omdirigeres til output.txt ved hjælp af et systemopkald. Derefter udfører vi endnu et systemopkald med kommandoen “rm” (fjern) for at fjerne fil output.txt.
Efter dette udfører vi igen ls-kommandoen, og denne gang omdirigerer vi output til en anden fil, dvs. text.txt. Endelig udskriver vi indholdet af text.txt-filen.
#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(); }
Produktion:

C ++ systempause
Systemkommandoen ('pause') stopper operationerne midlertidigt, når de udføres. Systemopkaldet ('pause') afhænger af operativsystemet og udfører følgende trin:
- Dette opkald suspenderer programmet midlertidigt og signalerer også operativsystemet om at åbne operativsystemets skal.
- Operativsystemet tildeler hukommelsen til kommandoen, der skal udføres.
- Derefter omplacerer den hukommelsen, afslutter operativsystemet og genoptager det suspenderede program.
Det følgende program viser et eksempel på et systemopkald ('pause').
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Produktion:

Som allerede nævnt er systemopkaldet ('pause') meget langsomt og afhænger af operativsystemet. De ovennævnte trin er tunge at udføre.
Derudover kan systemopkald også udgøre nogle sikkerhedsrisici. Derfor stoler vi normalt ikke på systemopkald ('pause') i vores programmer.
I stedet kan vi bruge cin.get til at opnå den samme funktionalitet som et system ('pause') som vist i nedenstående program.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Produktion:

Som vist ovenfor kan vi bruge cin.get til at sætte output på pause, indtil vi trykker på en eller anden tast. I modsætning til systemet er 'pause' ikke operativsystemafhængig. Det følger heller ikke de trin, der er udført, når vi udfører systemet ('pause').
System vs biblioteksfunktioner
Systemopkaldene afhænger af operativsystemet. De er også meget langsomme og tunge ressourcer. Biblioteksfunktioner er ikke OS-afhængige. De er hurtigere og bruger ikke for mange ressourcer eller hukommelse.
De mest almindelige anvendelser af systemopkald er til systemkommandoer ('pause') og system ('cls'). Biblioteksfunktioner er indbyggede funktioner, der indeholder funktioner relateret til matematik, fil I / O osv.
Konklusion
I denne C ++ Shell-vejledning diskuterede vi forskellige systemfunktioner. Vi så eksempler på at videregive en nul pointer til systemkommandoen, der kontrollerer, om kommandoprocessoren er tilgængelig eller ej. Vi diskuterede også systemkommandoen ('pause') og dens alternativer i detaljer.
=> Tjek ALLE C ++ tutorials her.
Anbefalet læsning
- Shell Sort In C ++ med eksempler
- Unix Shell Scripting Tutorial med eksempler
- Unix Shell Loop-typer: Gør mens Loop, For Loop, indtil Loop i Unix
- Unix Shell Script Aritmetiske og Boolske operatøreksempler
- Unix Shell Script-funktioner med parametre og retur
- Avanceret Unix Shell-scripting: Arrays, fil- og strengtestoperatører, specielle variabler
- C ++ regex Selvstudie: Regulære udtryk i C ++ med eksempler