c shell system programming tutorial with examples
Αυτό το σεμινάριο παρέχει έναν λεπτομερή λογαριασμό της C ++ Shell ή της κλήσης συστήματος () που χρησιμοποιείται για την επίκληση της εντολής του λειτουργικού συστήματος από ένα πρόγραμμα C ++.
Στον κόσμο προγραμματισμού λογισμικού, τα περισσότερα API του λειτουργικού συστήματος στοχεύουν στη γλώσσα C. C ++ παρέχει άμεση υποστήριξη για κλήσεις συναρτήσεων C από τον κώδικα C ++.
Ως εκ τούτου, σε αυτήν την περίπτωση, το C ++ γίνεται επίσης μια γλώσσα προγραμματισμού συστήματος. Το C ++ παρέχει μια εντολή 'system ()' για την επίκληση εντολών του λειτουργικού συστήματος από το πρόγραμμα C / C ++.
Με άλλα λόγια, μπορούμε να πούμε ότι η εντολή system () εκτελεί μια εντολή C + shell. Σε αυτό το σεμινάριο, θα συζητήσουμε λεπτομερώς την εκτέλεση της εντολής κελύφους ή του συστήματος ().
=> Εξερευνήστε την απλή σειρά εκπαίδευσης C ++ εδώ.
Τι θα μάθετε:
- Κλήσεις συστήματος C ++
- Παύση συστήματος C ++
- Λειτουργίες βιβλιοθήκης συστήματος Vs
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Κλήσεις συστήματος C ++
Τώρα ας συζητήσουμε την κλήση συστήματος και τις λεπτομέρειες της με παραδείγματα.
Πρωτότυπο λειτουργίας: int σύστημα (const char * εντολή);
Παράμετροι:
command => Μια συμβολοσειρά C που περιέχει την εντολή προς εκτέλεση.
Εάν περάσει ένας μηδενικός δείκτης, τότε γίνεται μόνο έλεγχος για τον επεξεργαστή εντολών.
Αξία επιστροφής: Επιστρέφει μια τιμή int. Η τιμή που επιστρέφεται εξαρτάται από το αν η συμβολοσειρά τύπου C καθορίζεται ως όρισμα ή εάν έχει οριστεί ένας μηδενικός δείκτης.
- Null Pointer => Εάν έχει οριστεί ο μηδενικός δείκτης, τότε επιστρέφει μη μηδενική τιμή εάν ο επεξεργαστής εντολών είναι διαθέσιμος και μηδέν διαφορετικά.
- Η εντολή καθορίστηκε => Όταν καθοριστεί η εντολή, τότε ο κωδικός κατάστασης επιστρέφεται συνήθως, αλλά η τιμή που επιστρέφεται εξαρτάται από την εφαρμογή του συστήματος και της βιβλιοθήκης.
Περιγραφή: Η εντολή συστήματος εκτελεί μια εντολή που παρέχεται ως όρισμα. Η τιμή που επιστρέφεται εκτελώντας την εντολή εξαρτάται συνήθως από την εφαρμογή του συστήματος και της βιβλιοθήκης. Εάν περάσει ένας μηδενικός δείκτης αντί για μια εντολή, τότε αυτή η κλήση ελέγχει απλώς εάν ο επεξεργαστής εντολών είναι διαθέσιμος ή όχι.
Η κλήση επιστρέφει μη μηδενική τιμή εάν ο επεξεργαστής εντολών είναι διαθέσιμος και μηδέν διαφορετικά.
Χρησιμοποιώντας το σύστημα (), μπορούμε να εκτελέσουμε σχεδόν οποιαδήποτε εντολή εφόσον το επιτρέπει το λειτουργικό σύστημα. Για παράδειγμα, μπορούμε να τρέξουμε το σύστημα ('dir') ή το σύστημα ('ls') με την ίδια ευκολία. Στην πραγματικότητα, μπορούμε ακόμη να καλέσουμε τον μεταγλωττιστή GCC από το πρόγραμμά μας.
Παρατίθενται παρακάτω μερικά παραδείγματα εντολών συστήματος που χρησιμοποιούνται στο C ++ για την εκτέλεση των εντολών κελύφους C ++.
Παράδειγμα 1:
Αυτό το παράδειγμα δείχνει την επίδειξη εντολών συστήματος με μηδενικό δείκτη ως όρισμα.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Παραγωγή:

Στο παραπάνω πρόγραμμα, ελέγχουμε πρώτα εάν ο επεξεργαστής εντολών είναι διαθέσιμος μεταβιβάζοντας null στην κλήση συστήματος. Εάν ο επεξεργαστής εντολών είναι διαθέσιμος τότε εκτελούμε την εντολή dir. Εάν ο επεξεργαστής εντολών δεν είναι διαθέσιμος, βγούμε από το πρόγραμμα με αποτυχία.
Παράδειγμα 2:
Το παρακάτω παράδειγμα δείχνει την εκτέλεση της εντολής ls όπου η έξοδος διοχετεύεται σε ένα αρχείο κειμένου 'output.txt'. Μετά την εκτέλεση της κλήσης συστήματος (), εκτυπώνουμε τα περιεχόμενα του 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(); }
Παραγωγή:

Η έξοδος του παραπάνω προγράμματος είναι τα περιεχόμενα του αρχείου 'output.txt' το οποίο δεν είναι τίποτα άλλο παρά το αποτέλεσμα της εντολής ls.
Παράδειγμα 3:
Το παρακάτω πρόγραμμα C ++ είναι η συνέχεια του προηγούμενου παραδείγματος. Εδώ εκτελούμε την εντολή ls που ανακατευθύνεται στο output.txt χρησιμοποιώντας μια κλήση συστήματος. Στη συνέχεια εκτελούμε μια άλλη κλήση συστήματος με την εντολή 'rm' (remove) για να αφαιρέσουμε το αρχείο output.txt.
Μετά από αυτό, εκτελούμε ξανά την εντολή ls και αυτή τη φορά ανακατευθύνουμε την έξοδο σε άλλο αρχείο, δηλαδή text.txt. Τέλος, εκτυπώνουμε τα περιεχόμενα του αρχείου 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(); }
Παραγωγή:

Παύση συστήματος C ++
Η εντολή συστήματος («παύση») διακόπτει προσωρινά τις λειτουργίες όταν εκτελούνται. Η κλήση συστήματος («παύση») εξαρτάται από το λειτουργικό σύστημα και εκτελεί τα ακόλουθα βήματα:
- Αυτή η κλήση αναστέλλει προσωρινά το πρόγραμμα και σηματοδοτεί επίσης το λειτουργικό σύστημα να ανοίξει το κέλυφος του λειτουργικού συστήματος.
- Το λειτουργικό σύστημα εκχωρεί τη μνήμη για την εκτέλεση της εντολής.
- Στη συνέχεια, αφαιρεί τη μνήμη, βγαίνει από το λειτουργικό σύστημα και συνεχίζει το πρόγραμμα που έχει τεθεί σε αναστολή.
Το ακόλουθο πρόγραμμα δείχνει ένα παράδειγμα μιας κλήσης συστήματος («παύση»).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Παραγωγή:

Όπως ήδη αναφέρθηκε, η κλήση του συστήματος («παύση») είναι πολύ αργή και εξαρτάται από το λειτουργικό σύστημα. Τα παραπάνω βήματα είναι βαριά για εκτέλεση.
Επιπλέον, οι κλήσεις συστήματος ενδέχεται επίσης να ενέχουν κινδύνους ασφαλείας. Ως εκ τούτου, συνήθως δεν βασίζουμε στις κλήσεις του συστήματος («παύση») στα προγράμματά μας.
Αντ 'αυτού, μπορούμε να χρησιμοποιήσουμε το cin.get για να επιτύχουμε την ίδια λειτουργικότητα με ένα σύστημα ('παύση') όπως φαίνεται στο παρακάτω πρόγραμμα.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Παραγωγή:

Όπως φαίνεται παραπάνω, μπορούμε να χρησιμοποιήσουμε το cin.get για παύση της εξόδου έως ότου πατήσουμε κάποιο πλήκτρο. Σε αντίθεση με το σύστημα ('παύση') δεν εξαρτάται από το λειτουργικό σύστημα. Επίσης, δεν ακολουθεί τα βήματα που εκτελούνται κατά την εκτέλεση του συστήματος ('παύση').
Λειτουργίες βιβλιοθήκης συστήματος Vs
Οι κλήσεις συστήματος εξαρτώνται από το λειτουργικό σύστημα. Είναι επίσης πολύ αργοί και βαρύνουν τους πόρους. Οι λειτουργίες της βιβλιοθήκης δεν εξαρτώνται από το λειτουργικό σύστημα. Είναι ταχύτερα και δεν καταναλώνουν πάρα πολλούς πόρους ή μνήμη.
Οι πιο συνηθισμένες χρήσεις των κλήσεων συστήματος είναι για εντολές συστήματος ('παύση') και συστήματος ('cls'). Οι συναρτήσεις βιβλιοθήκης είναι ενσωματωμένες συναρτήσεις που περιέχουν συναρτήσεις που σχετίζονται με τα μαθηματικά, το αρχείο I / O, κ.λπ.
συμπέρασμα
Σε αυτό το σεμινάριο C ++ Shell, συζητήσαμε διάφορες λειτουργίες συστήματος. Είδαμε παραδείγματα μετάδοσης ενός μηδενικού δείκτη στην εντολή συστήματος που ελέγχει εάν ο επεξεργαστής εντολών είναι διαθέσιμος ή όχι. Συζητήσαμε επίσης λεπτομερώς την εντολή του συστήματος («παύση») και τις εναλλακτικές λύσεις της.
ο καλύτερος τρόπος λήψης του youtube mp3
=> Δείτε ΟΛΟΥΣ τα μαθήματα C ++ εδώ.
Συνιστώμενη ανάγνωση
- Ταξινόμηση κελύφους σε C ++ με παραδείγματα
- Unix Shell Scripting Tutorial με παραδείγματα
- Τύποι βρόχων Unix Shell: Do While Loop, For Loop, μέχρι Loop in Unix
- Unix Shell Script Arithmetic και Boolean Operators Παραδείγματα
- Unix Shell Script Functions με παράμετροι και Return
- Advanced Unix Shell Scripting: Arrays, File and String Test Operators, Ειδικές μεταβλητές
- C ++ regex Tutorial: Κανονικές εκφράσεις στο C ++ με παραδείγματα