Чтобы ответить на ваш вопрос о том, как узнать, существует ли команда с вашим кодом. Вы можете попробовать проверить возвращаемое значение.
int ret = system("ls --version > /dev/null 2>&1"); //The redirect to /dev/null ensures that your program does not produce the output of these commands.
if (ret == 0) {
//The executable was found.
}
Вы также можете использовать popen , чтобы прочитать вывод. Объединение этого с командами whereis и type, предложенными в других ответах -
char result[255];
FILE* fp = popen("whereis command", "r");
fgets(result, 255, fp);
//parse result to see the path of the bin if it has been found.
pclose(check);
Или используя тип:
FILE* fp = popen("type command" , "r");
Результат выполнения команды type
немного сложнее, поскольку ее вывод варьируется в зависимости от того, что вы ищете (двоичный, псевдоним, функция, не найден).