Я пытаюсь проверить абсолютные пути на машине с Linux, чтобы найти, где находится программа, чтобы я мог запустить ее с моими конкретными аргументами.Проблема в том, что, когда я нахожу это, я продолжаю добавлять больше строк к правильному пути, а также утечку памяти, освобождая динамически распределенную память.Единственное исправление для дампа стека - это не освобождение (ret).На основании gdb я полагаю, что когда я запускаю пример с «ls», он находит программу и запускает ее, но дает странные результаты.
for(j = 0; j < i; j++, path = NULL)
{
token = strtok_r(path, delim, &saver);
if(token == NULL)
break;
else
{
strncat(ret, token, 80);
strncat(ret, "/", 1);
strncat(ret, command, 80);
args[0] = ret;
printf("%s\n", ret);
m = execv(ret, args);
printf("%d\n", m);
if(m < 0)
{
free(ret);
ret = malloc(120*sizeof(char));
}
else
break;
}
}
Где символ разделителя - двоеточие (:)strncat сделан правильно.Хотя я не уверен, так что спасибо за помощь.