0

尝试使用 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);

但我无法让它工作并收到一条错误消息:

错误:无法将参数 3 的 char* 转换为 char* const* 到 int execve(const char*, char* const*, char* const*)

4

1 回答 1

0

环境变量数组是一个字符串数组 (char*),而不是一个字符串。它需要一个 NULL 值作为数组中的最后一个元素。

模仿您用于实现 c1.getArgVector() 的代码,确保数组中的最后一个 char* 为 NULL。

于 2013-03-27T03:24:18.733 回答