Witaj, napiszę dla ciebie przykładowy kod, wyjaśnię go i mam nadzieję, że to ci pomoże. prototyp funkcji jest podobny do:
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). otwórz terminal i skompiluj program
2). uruchom go (na przykład w Ubuntu) ./nazwa_programu nazwa_programu -wszystko - cokolwiek
przykład: ./a.out locale -a
ten przykład wyświetla wszystkie ustawienia narodowe obsługiwane przez mój kompilator, którym jest gcc.
więcej informacji:
p to poniter do wskaźnika na char (jak argv jest) p = & argv [2], wskazuje na dowolny ciąg i cat wszystko-wszystko na mój ciąg cmd wychodzę z pętli, gdy * p wskazuje na NULL spójrz na to: -> użyję tego symbolu, aby powiedzieć punkty (nie mylić go z operatorem wyboru prawej strzałki).
argv [0] -> nazwa_programu
argv [1] -> nazwa_ polecenia (w tym przykładzie nazwa polecenia będzie ustawieniem regionalnym, ale zamiast tego wprowadź polecenie, które chcesz sprawdzić)
argv [2] -> -anything (w tym przykładzie -a, czyli wszystkie ustawienia narodowe)
argv [3] -> NULL (w tym przykładzie powoduje to zamknięcie pętli)
ok, to wszystko, tak myślę.