c shell system programming tutorial with examples
Ce didacticiel donne un compte rendu détaillé de l'appel C ++ Shell ou system () utilisé pour appeler la commande du système d'exploitation à partir d'un programme C ++.
Dans le monde de la programmation logicielle, la plupart des API du système d'exploitation sont ciblées sur C. Le langage C ++ fournit un support direct pour appeler des fonctions C à partir du code C ++.
Par conséquent, dans ce cas, C ++ devient également un langage de programmation système. C ++ fournit une commande «system ()» pour appeler les commandes du système d'exploitation à partir du programme C / C ++.
En d'autres termes, nous pouvons dire que la commande system () exécute une commande shell C ++. Dans ce tutoriel, nous aborderons en détail l'exécution de la commande shell ou de system ().
=> Découvrez la série de formations simples C ++ ici.
Ce que vous apprendrez:
- Appels système C ++
- Pause du système C ++
- Fonctions de la bibliothèque System Vs
- Conclusion
- lecture recommandée
Appels système C ++
Parlons maintenant de l'appel système et de ses détails avec des exemples.
Prototype de fonction: système int (commande const char *);
ouverture des fichiers .jar windows 10
Paramètres:
command => Une chaîne C contenant la commande à exécuter.
Si un pointeur nul est passé, seule une vérification du processeur de commande est effectuée.
Valeur de retour: Renvoie une valeur int. La valeur renvoyée dépend du fait que la chaîne de style C est spécifiée en tant qu'argument ou si un pointeur nul est spécifié.
- Pointeur nul => Si le pointeur nul est spécifié, il renvoie une valeur non nulle si le processeur de commande est disponible et zéro dans le cas contraire.
- La commande spécifiée => Lorsque la commande est spécifiée, le code d'état est généralement renvoyé mais la valeur renvoyée dépend de l'implémentation du système et de la bibliothèque.
Description: La commande système exécute une commande fournie en argument. La valeur renvoyée par l'exécution de la commande dépend généralement de l'implémentation du système et de la bibliothèque. Si un pointeur nul est passé au lieu d'une commande, cet appel vérifie simplement si le processeur de commande est disponible ou non.
L'appel renvoie une valeur non nulle si le processeur de commande est disponible et zéro dans le cas contraire.
En utilisant system (), nous pouvons exécuter presque toutes les commandes à condition que le système d'exploitation le permette. Par exemple, nous pouvons exécuter le système («dir») ou le système («ls») avec la même facilité. En fait, nous pouvons même invoquer le compilateur GCC depuis notre programme.
façons de regarder l'anime gratuitement
Vous trouverez ci-dessous quelques exemples de commandes système utilisées en C ++ pour exécuter les commandes shell C ++.
Exemple 1:
Cet exemple montre la démonstration de la commande système avec un pointeur nul comme argument.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Production:

Dans le programme ci-dessus, nous vérifions d'abord si le processeur de commande est disponible en passant null à l'appel système. Si le processeur de commandes est disponible, nous exécutons la commande dir. Si le processeur de commande n'est pas disponible, nous quittons le programme avec un échec.
Exemple 2:
L'exemple ci-dessous montre l'exécution de la commande ls dans laquelle la sortie est redirigée vers un fichier texte «output.txt». Une fois l'appel system () exécuté, nous imprimons le contenu du fichier 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(); }
Production:

La sortie du programme ci-dessus est le contenu du fichier «output.txt» qui n'est rien d'autre que la sortie de la commande ls.
Exemple 3:
Le programme C ++ ci-dessous est la continuation de l'exemple précédent. Ici, nous exécutons la commande ls qui est redirigée vers output.txt à l'aide d'un appel système. Ensuite, nous exécutons un autre appel système avec la commande «rm» (remove) pour supprimer le fichier output.txt.
Après cela, nous exécutons à nouveau la commande ls, et cette fois nous redirigeons la sortie vers un autre fichier, c'est-à-dire text.txt. Enfin, nous imprimons le contenu du fichier text.txt.
comment démarrer un projet java
#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(); }
Production:

Pause du système C ++
La commande système («pause») arrête temporairement les opérations lorsqu'elles sont exécutées. L'appel système («pause») dépend du système d'exploitation et effectue les étapes suivantes:
- Cet appel suspend temporairement le programme et signale également au système d'exploitation d'ouvrir le shell du système d'exploitation.
- Le système d'exploitation alloue la mémoire pour l'exécution de la commande.
- Ensuite, il libère la mémoire, quitte le système d'exploitation et reprend le programme suspendu.
Le programme suivant montre un exemple d'appel système («pause»).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Production:

Comme déjà mentionné, l'appel système («pause») est très lent et dépend du système d'exploitation. Les étapes mentionnées ci-dessus sont lourdes à exécuter.
En outre, les appels système peuvent également présenter des risques de sécurité. Par conséquent, nous ne nous reposons généralement pas sur les appels système («pause») dans nos programmes.
Au lieu de cela, nous pouvons utiliser cin.get pour obtenir les mêmes fonctionnalités qu'un système («pause») comme indiqué dans le programme ci-dessous.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Production:

Comme indiqué ci-dessus, nous pouvons utiliser cin.get pour suspendre la sortie jusqu'à ce que nous appuyions sur une touche. Contrairement au système («pause») ne dépend pas du système d'exploitation. Il ne suit pas non plus les étapes effectuées lors de l'exécution du système («pause»).
Fonctions de la bibliothèque System Vs
Les appels système dépendent du système d'exploitation. Ils sont également très lents et lourds en ressources. Les fonctions de la bibliothèque ne dépendent pas du système d'exploitation. Ils sont plus rapides et ne consomment pas trop de ressources ou de mémoire.
Les utilisations les plus courantes des appels système sont les commandes système («pause») et système («cls»). Les fonctions de bibliothèque sont des fonctions intégrées qui contiennent des fonctions liées aux mathématiques, aux E / S de fichiers, etc.
Conclusion
Dans ce didacticiel C ++ Shell, nous avons discuté de diverses fonctions système. Nous avons vu des exemples de passage d'un pointeur nul à une commande système qui vérifie si le processeur de commande est disponible ou non. Nous avons également discuté en détail de la commande système («pause») et de ses alternatives.
=> Consultez TOUS les didacticiels C ++ ici.
lecture recommandée
- Shell tri en C ++ avec des exemples
- Tutoriel de script Unix Shell avec des exemples
- Types de boucle du shell Unix: boucle Do While, boucle For, boucle jusqu'à sous Unix
- Exemples d'opérateurs arithmétiques et booléens de script shell Unix
- Fonctions de script du shell Unix avec paramètres et retour
- Scriptage avancé du shell Unix: tableaux, opérateurs de test de fichiers et de chaînes, variables spéciales
- Tutoriel C ++ regex: Expressions régulières en C ++ avec des exemples