我确信这是一个简单的问题,但是在用 C++ 创建模拟 shell 时,我不太了解项目的一个方面。
基本上,我们正在创建一个名为 myShell 的程序,使用命令“./myShell”调用。这将打开自定义外壳,但我想要做的是直接从带有令牌“-c”的命令调用外部函数。
例如,命令:“./myShell -c ls -l”将调用 linux ls 函数。一旦程序被实际调用,我就可以这样做,但不是在此之前(即打开 ./myShell,然后键入 ls -l"。
我是流程新手,任何帮助将不胜感激。
我确信这是一个简单的问题,但是在用 C++ 创建模拟 shell 时,我不太了解项目的一个方面。
基本上,我们正在创建一个名为 myShell 的程序,使用命令“./myShell”调用。这将打开自定义外壳,但我想要做的是直接从带有令牌“-c”的命令调用外部函数。
例如,命令:“./myShell -c ls -l”将调用 linux ls 函数。一旦程序被实际调用,我就可以这样做,但不是在此之前(即打开 ./myShell,然后键入 ls -l"。
我是流程新手,任何帮助将不胜感激。
你有代码等待用户输入,解释它从用户读取的命令,运行它们,然后在循环中返回等待用户输入,就像这个伪代码:
int main(int argc, char *argv[]) {
bool must_exit = false;
while (!must_exit) {
string input = read_user_input();
must_exit = interpret_and_run(input);
}
return 0;
}
修改您的函数以连接argv
s 并在进入循环之前运行它们:
int main(int argc, char *argv[]) {
bool must_exit = false;
if (argc > 2 && !strcmp(argv[1], "-c")) {
string input = concatenate(argv); // From 1 to N, not from 0 to N
must_exit = interpret_and_run(input);
}
while (!must_exit) {
string input = read_user_input();
must_exit = interpret_and_run(input);
}
return 0;
}