Здравствуйте, я напишу для вас пример кода, объясню его вам и очень надеюсь, что это поможет вам. прототип функции выглядит примерно так:
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). откройте терминал и скомпилируйте программу
2). запустите его (например, в Ubuntu) ./program_name comman_name -anything - что угодно
пример: ./a.out locale -a
этот пример печатает все локали, поддерживаемые моим компилятором gcc.
больше информации:
p - это указатель на указатель на char (как и argv) p = & argv [2], указывает на что-либо строку, я перебираю все что угодно в моей строке cmd, я выхожу из цикла, когда * p указывает на NULL, посмотрите на это: -> я буду использовать этот символ для обозначения точек (не путайте его с оператором выбора стрелки вправо).
argv [0] -> имя_программы
argv [1] -> имя_команды (в этом примере имя команды будет локаль, но введите команду, которую вы хотите проверить вместо)
argv [2] -> -anything (в этом примере -a, все локали)
argv [3] -> NULL (в этом примере это выходит из цикла)
хорошо, вот и все, я думаю.