对非常量字符[]调用execl
Call execl on a non-const char[]
我正在vector<string>
中从键盘获取命令,我想在execl()
中使用,但execl()需要const char *
。有没有其他类似于execl
的函数可以使用char*
参数,或者我如何用char*
调用execl
?
void Process::exec(string & program, vector<string> & params){
int i;
char x=program[0];
if(x=='/'){
char * argq[params.size()];
for(i=0;i<params.size();i++){
argq[i]=(string_to_c_convert(params[i]));
}
if(params.size()==2){
execl(argq[0],argq[0],(char *)0);
}
if(params.size()==3){
execl(argq[0],argq[1],argq[2],(char *)0);
}
}
const char *
并不意味着参数必须是const
,它意味着可以为const.
这里没有问题需要解决。
您可以用char[]
生成std::string
,然后使用返回const char*
:的std::string::data()
char * argq[params.size()];
for(i=0;i<params.size();i++){
argq[i]=(string_to_c_convert(params[i]));
}
const std::string args(argq);
execl(args.data()[0], args.data()[1], 0);
鉴于您已经有了一个std::vector<std::string>
,其中我假设每个std::string
实际上只是一个字符(基于循环和string_to_c_convert
函数),您可以完全跳过char[]
并执行以下操作:
execl(params[0].c_str(), params[1].c_str(), 0);
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- iwlist 在使用 execl 调用时尝试扫描所有接口
- C++ fork() 和 execl() 调用 (Linux) 后无法识别命令
- C++ Android 上的代码 - execl() 函数调用失败
- 对非常量字符[]调用execl
- 为什么我不能通过管道传输两个 execl 调用的输出?
- C系统调用pipe, fork和execl
- 调用execl时未找到Grep