Olá, vou escrever para você um código de exemplo, explicá-lo e realmente espero que isso ajude você. o protótipo da função é algo como:
sistema int (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) abra um terminal e compile o programa
2) execute-o (por exemplo, no Ubuntu) ./program_name comman_name -anything - qualquer coisa
exemplo: ./a.out locale -a
este exemplo imprime todos os locais suportados pelo meu compilador, que é o gcc.
mais informações:
p é um ponteiro para apontar para char (como argv é) p = & argv [2], aponta para -qualquer string que eu gato em tudo -qualquer coisa para minha cmd-string deixo o loop quando * p aponta para NULL veja isso: -> usarei este símbolo para dizer pontos para (não confunda com o operador de seleção de seta para a direita).
argv [0] -> nome_do_programa
argv [1] -> command_name (neste exemplo, o nome do comando será locale, mas digite o comando que você deseja verificar)
argv [2] -> -anything (neste exemplo -a, que é todas as localidades)
argv [3] -> NULL (neste exemplo, isso fecha o loop)
ok é isso, eu acho.