Как преобразовать строку в char [] * в команде C ++ execve?

При попытке использовать команду execve я получаю сообщение об ошибке из моих последних 2 аргументов.

     #include <unistd.h>
const char * c = enviorment.c_str();
execve(full.c_str() , cl.getArgVector(), c);

Я попытался использовать несколько различных параметров при копировании строк, таких как:

char *temp2 = new char[(path).size()+1];
strcpy ( temp2, cl.getCommand());
execve(full.c_str() , cl.getArgVector(), temp);

но я не могу заставить его работать и получить сообщение об ошибке:

ошибка: невозможно преобразовать char * в char * const * для аргумента 3 в int execve (const char *, char * const *, char * const *)

0

Решение

Массив переменных среды представляет собой массив строк (char *), а не одну строку. Ему нужно значение NULL в качестве последнего элемента в массиве.

Подражайте коду, который вы используете для реализации c1.getArgVector (), убедившись, что последний символ * в массиве равен NULL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]