Создание новой строки из записей в массиве 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);