Ciao scriverò per te un codice di esempio, te lo spiegherò e spero davvero che questo ti aiuti. il prototipo della funzione è simile a:
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). aprire un terminale e compilare il programma
2). eseguirlo (ad esempio in Ubuntu) ./program_name nome_comando -qualcosa - qualsiasi cosa
esempio: ./a.out locale -a
questo esempio stampa tutte le localizzazioni supportate dal mio compilatore che è gcc.
Ulteriori informazioni:
p è un poniter per puntare a char (come argv is) p = & argv [2], punta a -nulla stringa i cat tutto -tutto sulla mia stringa cmd ho lasciato il ciclo quando * p punta a NULL guarda questo: -> userò questo simbolo per dire i punti (non confonderlo con l'operatore di selezione della freccia a destra).
argv [0] -> nome_programma
argv [1] -> command_name (in questo esempio il nome del comando sarà locale, ma inserisci invece il comando che vuoi controllare)
argv [2] -> -qualcosa (in questo esempio -a, che è tutto locale)
argv [3] -> NULL (in questo esempio, questo chiude il ciclo)
ok questo è tutto, penso.