【发布时间】:2015-04-22 05:04:44
【问题描述】:
我正在编写一个 shell 程序,我知道 execvp 需要接受 execvp(args[start], args)。最初我读入命令并将其解析为字符串,存储“|”知道多个命令在哪里拆分。现在我正在尝试将向量转换为二维字符数组。不知道这是否正确,但我认为每一行都是带有一组命令和参数的 char* 。这样我可以在设置管道时循环通过它。这是我到目前为止的代码:
char** vectorToChar(char** arr, vector<string> cmdsAndArgs)
{
char* cmd;
char** args;
int i = 0;
int j = 0;
for (vector<string>::iterator it = cmdsAndArgs.begin(); it < cmdsAndArgs.end(); it++) {
string s = *it;
if (s == "|") {
cmd[j] = 0;
args[i] = cmd;
i++;
j = 0;
} else {
cmd[j] = *(char*)s.c_str();
j++;
}
}
cmd[j] = 0;
args[i] = cmd;
args[++i] = 0;
cout << endl << args[0][0] << endl;
return args;
}
获取总线错误:10
【问题讨论】: