c shell system programming tutorial with examples
Denna handledning ger en detaljerad redogörelse för C ++ Shell eller system () -anropet som används för att åberopa operativsystemkommandot från ett C ++ - program.
I programvaruprogrammeringsvärlden riktas de flesta av operativsystemets API: er till C. C ++ -språket ger direkt stöd för att anropa C-funktioner från C ++ -koden.
Därför blir C ++ i detta fall också ett systemprogrammeringsspråk. C ++ tillhandahåller ett 'system ()' - kommando för att anropa operativsystemets kommandon från C / C ++ - programmet.
Med andra ord kan vi säga att kommandot system () kör ett C ++ - skalkommando. I denna handledning diskuterar vi utförandet av shell-kommandot eller systemet () i detalj.
=> Utforska The Simple C ++ Training Series här.
Vad du kommer att lära dig:
C ++ systemanrop
Låt oss nu diskutera systemanropet och dess detaljer med exempel.
Funktionsprototyp: int system (const char * kommando);
Parametrar:
command => En C-sträng som innehåller kommandot som ska köras.
Om en nollpekare skickas, görs endast en kontroll för kommandoprocessorn.
Returvärde: Returnerar ett int-värde. Det returnerade värdet beror på om C-stilsträngen anges som ett argument eller om en nullpekare har angetts.
- Nullpekare => Om nollpekaren anges, returnerar den ett värde som inte är noll om kommandoprocessorn är tillgänglig och noll annars.
- Det angivna kommandot => När kommandot specificeras returneras vanligtvis statuskoden men värdet som returneras beror på implementeringen av systemet och biblioteket.
Beskrivning: Systemkommandot kör ett kommando som tillhandahålls som ett argument. Värdet som returneras genom att utföra kommandot är vanligtvis beroende av system- och biblioteksimplementering. Om en nollpekare skickas istället för ett kommando, kontrollerar detta samtal helt enkelt om kommandoprocessorn är tillgänglig eller inte.
Samtalet returnerar ett värde som inte är noll om kommandoprocessorn är tillgänglig och noll annars.
Med system () kan vi köra nästan alla kommandon förutsatt att operativsystemet tillåter det. Till exempel, vi kan köra systemet (“dir”) eller systemet (“ls”) med samma lätthet. Faktum är att vi till och med kan åberopa GCC-kompilatorn från vårt program.
Nedan finns några exempel på systemkommandon som används i C ++ för att utföra C ++ -skalkommandona.
Exempel 1:
Det här exemplet visar demonstrationen av systemkommandot med en nollpekare som ett argument.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Produktion:

I ovanstående program kontrollerar vi först om kommandoprocessorn är tillgänglig genom att skicka null till systemanropet. Om kommandoprocessorn är tillgänglig så kör vi kommandot dir. Om kommandoprocessorn inte är tillgänglig avslutar vi programmet med ett fel.
Exempel 2:
Nedanstående exempel visar körningen av ls-kommandot där utdata rörs till en textfil 'output.txt'. Efter att system () -anropet har genomförts skriver vi ut innehållet i output.txt.
bästa popup-annonsblockeraren för krom
#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:

Utgången från ovanstående program är innehållet i filen “output.txt” som inte är något annat än utdata från ls-kommandot.
Exempel 3:
C ++ - programmet nedan är en fortsättning på föregående exempel. Här kör vi kommandot ls som omdirigeras till output.txt med ett systemanrop. Sedan genomför vi ytterligare ett systemanrop med kommandot “rm” (ta bort) för att ta bort fil output.txt.
Efter detta kör vi igen kommandot ls, och den här gången omdirigerar vi utdata till en annan fil, dvs text.txt. Slutligen skriver vi ut innehållet i 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 ++ systempaus
Systemkommandot ('paus') stoppar tillfälligt operationerna när de körs. Systemet ('paus') är operativsystemberoende och utför följande steg:
- Detta samtal avbryter programmet tillfälligt och signalerar också operativsystemet att öppna operativsystemets skal.
- Operativsystemet tilldelar minnet för kommandot att köra.
- Sedan omplacerar den minnet, avslutar operativsystemet och återupptar det avbrutna programmet.
Följande program visar ett exempel på ett systemanrop ('paus').
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Produktion:

Som redan nämnts är systemanropet ('paus') mycket långsamt och är beroende av operativsystemet. Stegen som nämns ovan är tunga att utföra.
Dessutom kan systemanropen också medföra vissa säkerhetsrisker. Därför är vi vanligtvis inte beroende av systemanropen ('pausa') i våra program.
Istället kan vi använda cin.get för att uppnå samma funktionalitet som ett system ('pausa') som visas i programmet nedan.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Produktion:

Som visas ovan kan vi använda cin.get för att pausa utdata tills vi trycker på någon knapp. Till skillnad från systemet ('paus') är inte operativsystemberoende. Det följer inte heller stegen när vi kör systemet ('paus').
System mot biblioteksfunktioner
Systemanropen är beroende av operativsystemet. De är också mycket långsamma och tunga på resurser. Biblioteksfunktioner är inte OS-beroende. De är snabbare och förbrukar inte för mycket resurser eller minne.
De vanligaste användningarna av systemanrop är för system ('paus') och system ('cls') kommandon. Biblioteksfunktioner är inbyggda funktioner som innehåller funktioner relaterade till matematik, fil I / O, etc.
Slutsats
I denna C ++ Shell-handledning diskuterade vi olika systemfunktioner. Vi såg exempel på att skicka en nullpekare till systemkommandot som kontrollerar om kommandoprocessorn är tillgänglig eller inte. Vi diskuterade också systemkommandot ('pausa') och dess alternativ i detalj.
=> Kontrollera ALLA C ++ -handledning här.
Rekommenderad läsning
- Skalsortering i C ++ med exempel
- Unix Shell Scripting Tutorial med exempel
- Unix Shell Loop-typer: Gör While Loop, For Loop, tills Loop i Unix
- Unix Shell Script Aritmetic och Boolean Operators Exempel
- Unix Shell-skriptfunktioner med parametrar och retur
- Avancerat Unix Shell-skript: Arrayer, fil- och strängtestoperatörer, speciella variabler
- C ++ regex Handledning: Regelbundna uttryck i C ++ med exempel