C++ Befehlszeile ausführen
In diesem Artikel wird kurz auf die Methode system()
eingegangen, um Befehle in einem Befehlsprozessor über ein C++-Programm auszuführen.
C/C++ stellt eine Funktion bereit, die dies tun kann, ohne sich die Last nehmen zu müssen, einen anderen Prozess hervorzubringen, der den Befehlszeilenprozessor ausführen kann, um die CMD-Befehle auszuführen.
Verwenden Sie die system()
-Methode, um Befehlszeilenbefehle in C++ auszuführen
Die Funktion system()
ist seit langem Teil der C-Standardbibliothek, und wir können sie auch in C++-Code einbinden, ohne dass zusätzliche Bibliotheken erforderlich sind. Diese Funktion führt einen Shell-Befehl vom aufrufenden Prozess aus.
Es sollte jedoch beachtet werden, dass das system()
für bestimmte Anwendungsfälle konzipiert ist, in denen das aufrufende Programm einen einzelnen untergeordneten Prozess generieren und schnell darauf warten muss, dass er beendet wird.
Als Ergebnis wird die Funktion unter Verwendung mehrerer Systemaufrufe implementiert, die als Teil der System-API-Schnittstelle verfügbar sind.
In der Linux-Umgebung muss sich der Programmierer keine Gedanken über die Funktionen fork
, exec
und wait
machen, die das Erstellen und Löschen neuer untergeordneter Prozesse steuern.
Syntax, Parameter & Rückgabewerte der Methode system()
in C++
Die Syntax dieser Funktion lautet:
int system(const char* cmd_text);
Der einzige Parameter, der an die Funktion system()
übergeben wird, ist ein char
-Array, das den Befehlstext enthält. Der Befehlsprozessor führt diesen Befehlstext aus.
Denken Sie daran, dass wir dieser Funktion einen Null
-Zeiger als Parameter übergeben können, um die Verfügbarkeit des Befehlsprozessors zu prüfen.
Wenn dieser Funktion ein Befehl als Parameter übergeben wird, gibt system()
normalerweise den exit
-Status dieses Befehls zurück. Dennoch hängt der Rückgabewert manchmal vom Befehl und Dienstprogramm ab.
Angenommen, es wird ein Null
-Zeiger übergeben, um die Verfügbarkeit des Befehlsprozessors zu prüfen. In diesem Fall gibt es eine 0
zurück, wenn der Befehlsprozessor nicht verfügbar ist, und andernfalls einen Wert ungleich Null.
Beispielcodes zur Demonstration der C++-Befehlszeile ausführen
Das folgende Beispiel zeigt die grundlegendste Anwendung der Funktion system()
, die das Befehlszeilendienstprogramm date
ausführt, um das aktuelle Systemdatum zu drucken.
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
system("date");
return 0;
}
Es wird die folgende Ausgabe generiert:
Sat Sep 10 09:17:19 PM UTC 2022
Schauen wir uns ein weiteres Beispiel an, in dem wir zuerst prüfen, ob der Befehlsprozessor vorhanden ist oder nicht, und dann den Befehl ls -l
mit der Funktion system()
ausführen.
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
if (system(NULL)) {
cout << "Command Processor OK" << endl;
cout << "Running ls command" << endl;
system("ls -l");
} else
cout << "Command Processor not found!!" << endl;
return 0;
}
Es wird die folgende Ausgabe geben:
Command Processor OK
Running ls command
total 24
-rwxr-xr-x 1 root root 16744 Sep 10 21:18 jdoodle
-rw-r--r-- 1 root root 315 Sep 10 21:18 jdoodle.cpp