【发布时间】:2013-03-27 02:39:14
【问题描述】:
当尝试使用 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*)
【问题讨论】:
-
enviorment是什么样的?它是"KEY=VALUE"形式的单个键/值对还是多个分隔键变量? -
@JorgeIsraelPeña 我相信这是特定于环境的 (ba-dun-tss)
-
@RichardJ.RossIII 啊,好吧,确实,从手册页来看,这似乎是一种约定,但不一定是强制的/要求。我错误地认为它必须是
"KEY=VALUE"形式的字符串数组。尽管如此,我还是问我们是否应该拆分他的environment字符串,这取决于他的环境的execve对envp参数的期望。