Создание новой строки из записей в массиве char*

Так вот моя проблема. У меня есть список команд, введенных от пользователя, которые мне нужно использовать для передачи в execvp(), Вот пример с ls команда.

char *cmdList = {"ls", "-l", "folder1/folder2"}

Теперь мне нужен способ изменить эту первую запись, чтобы она имела форму "/bin/ls"

Это единственный способ сделать это с помощью команды strcat? В идеале я хотел бы напрямую изменить ls запись, чтобы я мог пройти cmdList прямо в execvp(),

2 ответа

Решение

Вам не нужно указывать полный путь для использования execvp(), Так что вам не нужно беспокоиться об изменении первого аргумента. Например, если у вас есть массив с аргументами:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
   char *cmdList[] = {"ls", "-l", "folder1/folder2", 0};

   execvp(cmdList[0], cmdList);
}

execvp() будет искать ls в вашем PATH и выполнить его.

Это работает для меня.

char * cmdList [] = {"ls", "-l", "folder1 / folder2"};

cmdList [0] = "/ bin / 1s"; printf ("% s", * cmdList);

Другие вопросы по тегам