Так я работаю над небольшим проектом, и у меня есть эта функция:Проверка другой каталог для программы
void call_execve(char *cmd)
{
int i;
char bin[5];
char full_cmd[100];
strcpy(bin, "/bin/");
strcat(full_cmd, bin);
strcat(full_cmd, cmd);
if(fork() == 0) {
i = execve(full_cmd, my_argv, my_envp);
if(i < 0) {
printf("%s: %s\n", full_cmd, "command not found");
exit(1);
}
} else {
wait(NULL);
}
}
Я предполагаю, что мой мозг просто не думает сегодня, что мне нужно сделать это проверить/usr/bin для команды программы или оболочки.
Я знаю, что могу использовать переменную $ PATH, но я не уверен, как работать с ней с помощью языка C. Было бы здорово, если бы вы могли бы переписать эту функцию либо выполнить программу из каталога/USR/бен или использовать $ PATH, чтобы выполнить программу
Спасибо заранее.
GeissT.
'char bin [5];' недостаточно места для ''/bin/"'. В 'strcat (full_cmd, ...)' calls 'full_cmd' имеет недопустимое значение (оно не было инициализировано) – pmg
Но/bin/есть 5 символов? Или косые черты добавляют еще несколько символов? –
есть завершающий '' \ 0'' во всех строках. – pmg