Hallo, ich werde für Sie einen Beispielcode schreiben, ihn Ihnen erklären und hoffe, dass dies Ihnen hilft. Der Prototyp der Funktion ist ungefähr so:
int system (const char * cmd);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CMN_LEN 100
int main(int argc, char *argv[])
{
char cmd[MAX_CMN_LEN] = "", **p;
if (argc < 2) /*no command specified*/
{
fprintf(stderr, "Usage: ./program_name terminal_command ...");
exit(EXIT_FAILURE);
}
else
{
strcat(cmd, argv[1]);
for (p = &argv[2]; *p; p++)
{
strcat(cmd, " ");
strcat(cmd, *p);
}
system(cmd);
}
return 0;
}
1). Öffnen Sie ein Terminal und kompilieren Sie das Programm
2). Führen Sie es aus (zum Beispiel in Ubuntu) ./program_name comman_name -anything - irgendetwas
Beispiel: ./a.out locale -a
In diesem Beispiel werden alle von meinem Compiler unterstützten Gebietsschemas gcc gedruckt.
Mehr Info:
p ist ein Poniter, der auf char zeigt (wie argv ist) p = & argv [2], zeigt auf -jegliche Zeichenfolge, die ich alle -jedes auf meine cmd-Zeichenfolge katze, ich verlasse die Schleife, wenn * p auf NULL zeigt Ich werde dieses Symbol verwenden, um Punkte zu sagen (verwechseln Sie es nicht mit dem Rechtspfeil-Auswahloperator).
argv [0] -> Programmname
argv [1] -> Befehlsname (in diesem Beispiel ist der Befehlsname das Gebietsschema, aber geben Sie stattdessen den Befehl ein, den Sie überprüfen möchten)
argv [2] -> -anything (in diesem Beispiel -a, das sind alle Gebietsschemas)
argv [3] -> NULL (in diesem Beispiel wird die Schleife verlassen)
ok das ist es, denke ich.