您不必从头开始完成完整的代码.问题出在main里面的execl(..)语句中.代码是 -
#include#include #include #include #include #include #define li long int using namespace std; char TypedCommandInTerminal[1001]; vector ValidCommands,TypedCommand; void ShowTerminal() { cout<<"User:$ "; gets(TypedCommandInTerminal); } void PushCommands() { ValidCommands.push_back("mkdir"); } void GetCommandIntoVector() { TypedCommand.clear(); char *p = strtok(TypedCommandInTerminal," "); while(p) { TypedCommand.push_back(p); p = strtok(NULL," "); } } bool MatchCommand(string Command) { li i; for(i=0;i 我试图在linux中使用c ++设计一个简单的终端.我在这里要做的是 - 在控制台中将此命令作为输入 - "mkdir ab".然后我设法对这个字符串进行了标记,并在TypedCommand [1]中的TypedCommand [0]和"ab"中保留了"mkdir".问题是当我在execl编译器中写入"TypedCommand [1]"时出现错误 - "无法传递非平凡可复制类型的对象....."我删除了TypedCommand [1]并手动编写了"ab"到位它的.代码运行并在执行目录中创建名为"ab"的文件夹.所以看起来像execl工作正常.
我需要以某种方式在execl中传递保存在TypedCommand [1]中的第二个字符串......这里有什么问题?