c shell system programming tutorial with examples
Deze tutorial geeft een gedetailleerd overzicht van de C ++ Shell of system () aanroep die wordt gebruikt om de opdracht van het besturingssysteem aan te roepen vanuit een C ++ programma.
In de wereld van softwareprogrammering zijn de meeste API's van het besturingssysteem gericht op C. C ++ -taal biedt directe ondersteuning voor het aanroepen van C-functies vanuit de C ++ -code.
Daarom wordt in dit geval C ++ ook een systeemprogrammeertaal. C ++ biedt een “system ()” commando om de commando's van het besturingssysteem uit het C / C ++ programma op te roepen.
Met andere woorden, we kunnen zeggen dat de opdracht system () een C ++ - shellopdracht uitvoert. In deze tutorial zullen we de uitvoering van het shell-commando of system () in detail bespreken.
Ontdek hier de Simple C ++ Training Series.
Wat je leert:
beste videogamebedrijven om voor te werken
- C ++ - systeemoproepen
- C ++ Systeempauze
- Systeem versus bibliotheekfuncties
- Gevolgtrekking
- Aanbevolen literatuur
C ++ - systeemoproepen
Laten we nu de systeemoproep en de details ervan met voorbeelden bespreken.
Functieprototype: int systeem (const char * commando);
Parameters:
command => Een C-string met het uit te voeren commando.
Als een nulwijzer wordt doorgegeven, wordt alleen de opdrachtprocessor gecontroleerd.
Winstwaarde: Retourneert een int-waarde. De geretourneerde waarde is afhankelijk van of de tekenreeks in C-stijl is opgegeven als een argument of dat er een null-pointer is opgegeven.
- Null-aanwijzer => Als de nulaanwijzer is opgegeven, retourneert deze een waarde die niet nul is als de opdrachtprocessor beschikbaar is en anders nul.
- Het opgegeven commando Wanneer de opdracht is opgegeven, wordt de statuscode meestal geretourneerd, maar de geretourneerde waarde is afhankelijk van het systeem en de bibliotheekimplementatie.
Omschrijving: Het systeemcommando voert een commando uit dat als argument wordt geleverd. De waarde die wordt geretourneerd door het uitvoeren van de opdracht, is meestal afhankelijk van de systeem- en bibliotheekimplementatie. Als een null-pointer wordt doorgegeven in plaats van een commando, controleert deze aanroep eenvoudig of de commandoprocessor beschikbaar is of niet.
De aanroep retourneert een waarde die niet nul is als de opdrachtprocessor beschikbaar is en anders nul.
Met behulp van system () kunnen we bijna elke opdracht uitvoeren, op voorwaarde dat het besturingssysteem dit toestaat. Bijvoorbeeld, we kunnen het systeem ('dir') of het systeem ('ls') met evenveel gemak draaien. In feite kunnen we zelfs de GCC-compiler vanuit ons programma oproepen.
de beste mp3-muziekdownloader-app
Hieronder staan een paar voorbeelden van systeemopdrachten die in C ++ worden gebruikt om de C ++ shell-opdrachten uit te voeren.
Voorbeeld 1:
Dit voorbeeld toont de demonstratie van systeemopdrachten met een null-pointer als argument.
Uitgang:
In het bovenstaande programma controleren we eerst of de opdrachtprocessor beschikbaar is door null door te geven aan de systeemoproep. Als de commandoprocessor beschikbaar is, voeren we het dir-commando uit. Als de opdrachtprocessor niet beschikbaar is, verlaten we het programma met een fout.
Voorbeeld 2:
Het onderstaande voorbeeld toont de uitvoering van het ls-commando waarbij de uitvoer wordt doorgesluisd naar een tekstbestand 'output.txt'. Nadat de system () aanroep is uitgevoerd, printen we de inhoud van de output.txt.
Uitgang:
De uitvoer van het bovenstaande programma is de inhoud van het bestand 'output.txt' dat niets anders is dan de uitvoer van het ls-commando.
Voorbeeld 3:
Het onderstaande C ++ -programma is de voortzetting van het vorige voorbeeld. Hier voeren we het ls-commando uit dat wordt omgeleid naar output.txt met behulp van een systeemaanroep. Vervolgens voeren we een andere systeemaanroep uit met de opdracht 'rm' (remove) om het bestand output.txt te verwijderen.
Hierna voeren we opnieuw de opdracht ls uit, en deze keer sturen we de uitvoer om naar een ander bestand, namelijk text.txt. Ten slotte printen we de inhoud van het text.txt-bestand.
grenswaardeanalyse en equivalentiepartitionering
Uitgang:
C ++ Systeempauze
De systeemopdracht ('pauze') stopt de bewerkingen tijdelijk wanneer deze wordt uitgevoerd. De systeemoproep ('pauze') is afhankelijk van het besturingssysteem en voert de volgende stappen uit:
- Deze aanroep schort het programma tijdelijk op en geeft ook het besturingssysteem een signaal om de shell van het besturingssysteem te openen.
- Het besturingssysteem wijst het geheugen toe voor de uit te voeren opdracht.
- Vervolgens wordt de toewijzing van het geheugen ongedaan gemaakt, wordt het besturingssysteem afgesloten en wordt het onderbroken programma hervat.
Het volgende programma toont een voorbeeld van een systeemoproep ('pauze').
Uitgang:
Zoals reeds vermeld, is de systeemoproep ('pauze') erg traag en is deze afhankelijk van het besturingssysteem. De hierboven genoemde stappen zijn zwaar om uit te voeren.
Bovendien kunnen de systeemoproepen ook enkele beveiligingsrisico's opleveren. Daarom vertrouwen we meestal niet op de systeemoproepen ('pauze') in onze programma's.
In plaats daarvan kunnen we cin.get gebruiken om dezelfde functionaliteit te bereiken als een systeem ('pauze'), zoals weergegeven in het onderstaande programma.
Uitgang:
Zoals hierboven getoond, kunnen we cin.get gebruiken om de uitvoer te pauzeren totdat we op een toets drukken. In tegenstelling tot het systeem ('pauze') is het niet afhankelijk van het besturingssysteem. Het volgt ook niet de stappen die worden uitgevoerd wanneer we het systeem uitvoeren ('pauze').
Systeem versus bibliotheekfuncties
De systeemoproepen zijn afhankelijk van het besturingssysteem. Ze zijn ook erg traag en verbruiken veel middelen. Bibliotheekfuncties zijn niet OS-afhankelijk. Ze zijn sneller en verbruiken niet te veel bronnen of geheugen.
Systeemoproepen worden het meest gebruikt voor systeemopdrachten ('pauze') en systeemopdrachten ('cls'). Bibliotheekfuncties zijn ingebouwde functies die functies bevatten die verband houden met wiskunde, bestands-I / O, enz.
Gevolgtrekking
In deze C ++ Shell-zelfstudie hebben we verschillende systeemfuncties besproken. We hebben voorbeelden gezien van het doorgeven van een null-pointer aan een systeemopdracht die controleert of de opdrachtprocessor beschikbaar is of niet. We hebben ook de systeemopdracht ('pauze') en de alternatieven in detail besproken.
Bekijk hier ALLE C ++ Tutorials.
Aanbevolen literatuur
- Shell-sortering in C ++ met voorbeelden
- Unix Shell Scripting Tutorial met voorbeelden
- Unix Shell Loop-typen: Do While Loop, For Loop, tot Loop in Unix
- Voorbeelden van rekenkundige en booleaanse operatoren in Unix Shell Script
- Unix Shell-scriptfuncties met parameters en Return
- Geavanceerde Unix Shell Scripting: arrays, bestands- en stringtestoperatoren, speciale variabelen
- C ++ regex-zelfstudie: reguliere expressies in C ++ met voorbeelden