При попытке использовать команду 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 *)
Массив переменных среды представляет собой массив строк (char *), а не одну строку. Ему нужно значение NULL в качестве последнего элемента в массиве.
Подражайте коду, который вы используете для реализации c1.getArgVector (), убедившись, что последний символ * в массиве равен NULL.
Других решений пока нет …